• 一种简单且又有逼格的技术


     

             前言:今天我们一起来学习一种简单而且又有逼格的技术,设计模式中的工厂模式。虽然工作的时候我们使用的框架都是封装好的,直接参考API写代码就Ok了,但是总有一些公司美其名曰要考察面试者的基

    功,于是就会问问设   计模式或者算法,框架源码。其实没有那个公司想着让自己的公司员工成为大牛,原因也很简单你的技术牛了肯定想要更高的工资,公司不想支付高工资又会导致员工跳槽。

     

           问题描述:今天上班你项目经理对你说,小张,宠物管理系统你开发一个波斯猫类Persian Cat,项目相关业务都调用你的代码创建对象,于是你三下五除二就完成了这个工作,于是你一遍洋洋得意又感觉项目经

    理对你大材小用!

    public class TestNoFactory {

    public static void main(String[] args) {

    PersianCat persianCat = new PersianCat();

    persianCat.run();

    }

    }

     

    class PersianCat {

    public void run() {

    System.out.println("PersianCat.run()");

    }

    }

     

               很快你的代码通过SVN上传到服务器,大家也开始调用代码创建对象100次啊100次,下午项目经理又过来说:小张啊,上午的业务需求修改一下,波斯猫添加名字属性并且创建对象的时候需要直接初始化

    名字!小张心里默念你是老大你说了算,改吧!

    public class TestNoFactory {

    public static void main(String[] args) {

    PersianCat persianCat = new PersianCat("花花");

    persianCat.run();

    }

    }

     

    class PersianCat {

    private String name;

     

    public PersianCat(String name) {

    this.name = name;

    }

     

    public void run() {

    System.out.println("PersianCat.run()");

    }

    }

     

             但是当你再把这个代码上传到服务器的时候,整个项目组就炸了,所有(100次啊100次)使用波斯猫创建对象的地方代码都需要修改代码,无形中增加了大家的工作量。于是你在大家杀人的目光中度过了一个下

    午。但是该来的还是会来的,下午下班的时候项目经理说客户变需求了,需要给波斯猫增加颜色属性,并且创建的时候初始化,这个时候小张应该是绝望的。其实这是一个很典型的在一个对象中创建别的对象,

    无形中造成了类与类的强耦合。也是我们要用工厂模式解决的第一个问题,于是小张痛定思痛将代码修改如下

    public class TestEasyFactory {

    public static void main(String[] args) {

    PersianCat persianCat = PersianCatFactory.create();

    persianCat.run();

    }

    }

     

    class PersianCatFactory {

    public static PersianCat create() {

    PersianCat persianCat = new PersianCat("花花");

    return persianCat;

    }

    }

     

    class PersianCat {

    private String name;

     

    public PersianCat(String name) {

    this.name = name;

    }

     

    public void run() {

    System.out.println("PersianCat.run()");

    }

    }

     

              这个时候小张终于解决了这个问题,以后经理再说修改波斯猫的属性也不怕啦,因为对象的创建对于别人来说都是通过工厂类解决的,不会再涉及到创建过程中细节的干扰。

              虽然波斯猫的问题解决了,但是小张的头疼事又来了,今天项目经理告诉小张因为业务扩张,现在需要添加类埃及猫,而且不要干扰到上层业务的调用。

              想知道具体答案请持续关注我哦

     

              下集预告:《工厂模式(2)简单工厂模式下篇》

  • 相关阅读:
    json转List、Map
    java复制文件的4种方式
    Java并发编程之CountDownLatch的用法
    SpringMVC整合ActiveMQ
    Spring AOP (事务管理)
    Spring AOP 的实现方式(以日志管理为例)
    Java设计模式之模板方法模式(Template Method)
    MongoDB简介
    线程池的实现原理
    ReentrantLock的底层实现机制 AQS
  • 原文地址:https://www.cnblogs.com/mostknow/p/10097205.html
Copyright © 2020-2023  润新知