工厂模式
子类父类代换
场景:在不同的条件下,需要创建不同的实现子类时。
如网络通信可以使用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");
抽象工厂模式
创建其他工厂的工厂
场景:同一系列的产品,一套的东西,需要对应的一套工厂来创建不同的实现子类。这时需要一个抽象工厂来根据条件创建需要的工厂。
实例:http://www.runoob.com/design-pattern/abstract-factory-pattern.html