设计原则
提供生产工厂类
简单工厂
代码
/**
* 简单工厂模式
* 一家“简单面馆”(简单工厂类)
*/
public class SimpleNoodlesFactory {
public static final int TYPE_LZ = 1;//兰州拉面
public static final int TYPE_PM = 2;//泡面
public static final int TYPE_GK = 3;//热干面
/**
* 如果生产对象的方法是static的,这种简单工厂也叫做静态工厂
* 如果生产对象的方法不是static的,这种简单工厂也叫做实例工厂
* @param type
* @return
*/
public static INoodles createNoodles(int type) {
switch (type) {
case 1:
return new LzNoodles();
case 2:
return new PaoNoodles();
case 3:
return new ReganNoodles();
default:
return new LzNoodles();
}
}
}
描述
如果生产对象的方法是static的,这种简单工厂也叫做静态工厂
如果生产对象的方法不是static的,这种简单工厂也叫做实例工厂
方法工厂
代码
/**
* 工厂方法模式
*/
public interface INoodlesFactory {
INoodles createNoodles();
}
public class LzINoodlesFactory implements INoodlesFactory {
@Override
public INoodles createNoodles() {
return new LzNoodles();
}
}
描述
工厂接口化
应用场景
spring IOC 控制反转