类似于一个车场可以制造很多类型的车,如轿车,SUV,客车。客户不需要知道具体的车是那个车场制造的,只要知道是什么牌子的就可以了。
1.普通工厂模式:定义一个产品接口,所有产品实现这个接口,比较简单。此时把IProduct定义为一个接口,Product1,Product2实现类:工厂-->产品
public class Car{
public static ICar createProduct(String productNo){
switch(productNo){
case "1" return new Product1(***);
case "2" return new Product2(***);
default :throw new NotSupportedException("为支持此编号生产的产品");
}
}
}
2.抽象工厂模式:比普通工厂模式复杂,当车的类型比较多的时候就需要多个工厂生产形成:抽象工厂-->具体工厂-->产品的关系
2.1工厂接口:
public interface IProductFactory{
public IProduct createProduct(String productNo);
}
2.2具体工厂:
public class ProductFactory1 implements IProductFactory{
public IProduct createProduct(String productNo){
IProduct product=***;
return product
}
}
public class ProductFactory2 implements IProductFactory{
public IProduct createProduct(String productNo){
IProduct product=***;
return product
}
}
2.3:创建产品:
public class ProductFactory implements IProductFactory {
public static IProduct createProduct(String productNo) {
char ch = productNo.charAt(0);
IProductFactory factory = null;
if (ch == '1') {
factory = new productFactory1();
} else if (ch == '2') {
factory = new productFactory2();
}
if (factory != null) {
return factory.createProduct(productNo);
}
return null;
}
}