就是一个静态工具类,用来创建一个接口下实现类的实例
也称“静态工厂模式”。不属于23中设计模式,但是所有工厂模式的基础
事例
要生产的类
public interface Fruit {
}
public class Apple implements Fruit {
}
public class Orange implements Fruit {
}
静态工厂类
public class StaticFactory {
public static final int TYPE_APPLE = 1;
public static final int TYPE_ORANGE = 2;
/**
* 创建不同Fruit实现类的实例
*/
public static Fruit getFruit(int type) {
if (type == TYPE_APPLE) {
return new Apple();
} else if (type == TYPE_ORANGE) {
return new Orange();
}
return null;
}
}
总结
优点
- 分离了生产者的生产逻辑和消费者的消费逻辑
缺点
- 单一职责原则 不符合。一个类会负责创建各类的水果
- 开闭原则 不符合。扩展水果品种时,要修改现有的静态工厂类