美文网首页java设计模式笔记
设计模式二--工厂模式

设计模式二--工厂模式

作者: 朽木亦自雕 | 来源:发表于2018-09-25 15:13 被阅读87次

工厂方法

工厂方法定义:定义一个用于创建对象的接口,并且让其子类决定实例化到哪一个类,工厂方法使一个类的实例化延迟到子类

工厂方法角色

1: 抽象工厂角色(Creator)
该角色是工厂方法模式的核心,任何创建对象的工厂类必须实现这个接口

public interface Creator{
  /**
    * 工厂方法,创建产品(对象)的时候输入参数类型即可
    */
  public <T extends Product> T factory(Class<T> c);
}

2:具体工厂角色(Concrete Creator)
该角色实现了Creator接口,受应用程序逻辑控制,应用程序调用此类以获得具体要创建的产品

  public class ConcreteCreator implements Creator{
      
      @override
      public <T extends Product> T factory(Class<T> c){
          Product product = null;
          try{
              product = (Product) Class.forName(c.getName.newInstance());
          }catch(Exception e){
               
          }
          return (T)product;
      }
  }

3:抽象产品角色(Product)
该角色负责定义对外产品的共性,实现对产品的最高抽象定义

 public interface Product{
    //所有产品公共类方法
    public void method1();
    public void method2();
}

4:具体产品角色
该角色是实现了抽象产品接口的具体类,是产品的具体实例

  public class ConcreteProduct implements Product{
        //实现接口方法
       @override
       public void method1(){
          System.out.println("ConcreteProduct.method1()"); 
       }
       @override
       public void method2(){
          System.out.println("ConcreteProduct.method2()")
       }
  }

具体调用代码

这里演示具体如何调用到以上定义的产品

public class Demo{
  public static void main(String [] args ){
    //得到工厂
    Creator creator = new ConcreteCreator();
    //得到具体产品
    Product product = creator.factory(ConcreteProduct.class);
    //调用产品的方法
    product.method1();
    product.method2();
  }
}

工厂方法的优点

1:良好的封装性,代码结构清晰,每个产品对应一个工厂类,所有实例创建均由工厂负责完成
2:比较容易扩展,新增产品或者修改部分产品的业务逻辑并不会改变其创建和调用方式
3:屏蔽了产品类,无论产品如何变化,调用者始终通过接口调用
4:高度抽象,有利于解除耦合

工厂方法使用场景

1:可以替代new关键字
2:当需要灵活的可扩展的框架的时候,可以优先考虑工厂模式
3:可以使用在异构项目中,如webservice与一个非java项目交互,可减少与外围系统耦合
4:可以使用在测试驱动开发的框架下,测试的时候可以避免强耦合关系导致的问题

工厂模式的扩展

1:简单工厂模式
2:多工厂模式
3:替代单例模式
4:延迟初始化

注:以上内容,后期再做补充,在这里不详细做讨论,后期补充链接

参考资料:设计模式之禅(二)

相关文章

  • 设计模式四、抽象工厂模式

    系列传送门设计模式一、单例模式设计模式二、简单工厂模式设计模式三、工厂模式设计模式四、抽象工厂模式 抽象工厂模式 ...

  • 设计模式三、工厂模式

    系列传送门设计模式一、单例模式设计模式二、简单工厂模式设计模式三、工厂模式设计模式四、抽象工厂模式 工厂模式 在一...

  • 设计模式一、单例模式

    系列传送门设计模式一、单例模式设计模式二、简单工厂模式设计模式三、工厂模式设计模式四、抽象工厂模式 简单单例(推荐...

  • iOS设计模式(三)之抽象工厂模式

    设计模式系列传送门 iOS设计模式(一)之简单工厂模式iOS设计模式(二)之工厂模式iOS设计模式(三)之抽象工厂...

  • iOS设计模式(一)之简单工厂模式

    设计模式系列传送门 iOS设计模式(一)之简单工厂模式iOS设计模式(二)之工厂模式iOS设计模式(三)之抽象工厂...

  • iOS设计模式(二)之工厂模式

    设计模式系列传送门 iOS设计模式(一)之简单工厂模式iOS设计模式(二)之工厂模式iOS设计模式(三)之抽象工厂...

  • 创建型设计模式

    一 . 工厂模式 二. 抽象工厂设计模式

  • Java 十一种设计模式深入理解

    目录一、工厂设计模式二、抽象工厂模式三、单例设计模式四、建造者(Builder)模式五、原型模式六、适配器设计模式...

  • 工厂模式

    java设计模式-工厂模式 工厂模式: 工厂模式是java设计模式里最常用的设计模式之一。 工厂模式属于创建型模式...

  • 设计模式之工厂模式

    设计模式之工厂模式 标签(空格分隔): 设计模式 工厂模式 设计模式的感念 设计模式的应用 工厂设计模式的产生 工...

网友评论

    本文标题:设计模式二--工厂模式

    本文链接:https://www.haomeiwen.com/subject/vicloftx.html