工厂模式

        前言:工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种设计模式属于创建型的模式,我们在使用时不需要关心内部是如何实现的,只需要提供统一的工厂接口来指向新创建的对象即可。注:这只是初次学习时的所悟,还有很多不对的地方还望各位多多指教。


一、为什么要用工厂模式?

初学,我个人的理解是:我们的编程时针对接口编程,一个接口可能会被多个不同的实现类实现,在实例化接口子类时,我们会对实例化的子类选择会有一定的迷惑,所以,我们提供一个统一的工厂,在需要实例化的时候,我们只需要关心这个工厂为我们提供的统一接口进行调用即可。

二、工厂模式的优点

调用者想要创建一个对象,只需要知道其名称就可以了,并且也不需要关心工厂内部是如何实现。同时,如果有新的业务模块加进来,对于工厂的扩展性是非常好的。

三、工厂模式的缺点

可以这么说,他的一些优点也是它的缺点,扩展性好带来的问题就是对于系统的复杂程度增加,业务的扩展,导致工厂极速的增加,并且对于工厂中的具体类的依赖程度也增加。本着“高内聚低耦合”的原则,这显的也不是什么好事情。

四、举例

我们需要一部手机,我们首先选择去售卖点或是网上售卖点进行购买,我们不需要关心如何通过各种零件组装成的手机,这些组装手机的过程由手机工厂帮我们完成即可。同理,工厂提供的接口就如手机售卖点,而手机组装就是我们的工厂内部实现过程。

五、编程

(1)、提供一个接口,Phone.java;

/**
 * 手机接口类
 */
public interface Phone{
   
   /*
    * 手机具体创造的方法,要创造手机,都要遵循此方法。
    */
   void createPhone();
}

(2)、创建一个华为手机的实现类,HaWeiPhone.java;

public class HuaWeiPhone implements Phone{
 
   @Override
   public void createPhone() {
      System.out.println("这里是华为手机的具体组装过程的方法");
   }
}

(3)、创建一个苹果手机的实现类,IOSPhone.java;

public class IOSPhone implements Phone{
 
   @Override
   public void createPhone() {
      System.out.println("这里是苹果手机的具体组装过程的方法");
   }
}

(4)、创建一个工厂,生成基于给定信息的实体类对象。PhoneFactory.java;

/**
 *  这里是手机生产的工厂,可以理解为将手机制造的方法为图纸,这里是真正生产的地方。
 */
public class PhoneFactory{
    
    /*
     * 根据给定的图纸标志,进行生产手机
     */
    public Phone getPhone(String phoneType){
        
        if(phoneType == null){
            return null;
        }
        if(phoneType.equalsIgnoreCase('HUAWEI')){
            return new HuaWeiPhone();
        }
        else if(phoneType.equalsIgnoreCase('IOS')){
            return new IOSPhone();
        }else{
            return null;
        }
        
        return null;
    }
}

(5)、手机售卖统一提货处。PhoneSale.java;

public class PhoneSale{

    public static void main(String[] args) {
        //到这个手机工厂提货
        PhoneFactory phoneFactory = new PhoneFactory();
        
        //告诉工厂,我要华为手机
        Phone phone1 = phoneFactory.getPhone("HUAWEI");
        //工厂得到我们要的手机类别,为我们立马生产出华为手机
        phone1.createPhone();

        //现在我又要一个IOS手机
        Phone phone2 = phoneFactory.getPhone("IOS");
        //工厂又为我们生产一个IOS手机
        phone2.createPhone();

    }
}

(6)、买到手机后的结果为: 

这里是华为手机的具体组装过程的方法

这里是苹果手机的具体组装过程的方法

 

如有理解错误之处,望多多包涵指正。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值