工厂模式、抽象工厂模式

工厂模式

子类父类代换
场景:在不同的条件下,需要创建不同的实现子类时。

如网络通信可以使用TCP、UDP。可以实现同一个接口,通过工厂类根据条件(TCP或UDP)来实例化不同的子类。

这些子类符合里氏代换原则。

public interface TLProtocol{
    void intro();
}

public class TCP implements TLProtocol{
    @Override
    public void intro() {
      System.out.println("TCP");
   }
}

public class UDP implements TLProtocol{
    @Override
    public void intro() {
      System.out.println("UDP ");
   }
}
/**
* 根据条件type生产TLProtocol的特定子类
**/
public class TLProtocolFactory{
    public TLProtocol getTLProtocol(String type){
      if(type== null){
         return null;
      }        
      if(type.equalsIgnoreCase("TCP")){
         return new TCP();
      } else if(type.equalsIgnoreCase("UDP")){
         return new UDP();
      } 
      return null;
   }
}

//TLProtocolFactory tLProtocolFactory = new TLProtocolFactory();
//TLProtocol protocal = tLProtocolFactory .gettLProtocol("TCP");

抽象工厂模式

创建其他工厂的工厂
场景:同一系列的产品,一套的东西,需要对应的一套工厂来创建不同的实现子类。这时需要一个抽象工厂来根据条件创建需要的工厂。

Created with Raphaël 2.1.2 开始 工厂创建器 条件 创建继承抽象工厂的具体实例(工厂) 条件 工厂创建实体类对象 结束 null yes no yes no

实例:http://www.runoob.com/design-pattern/abstract-factory-pattern.html

猜你喜欢

转载自blog.csdn.net/canyanruxue/article/details/80531926