从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。
优点:工厂类是整个模式的关键所在。它包含必要的判断逻辑,能够根据外界给定的信息,决定究竟应该创建哪个具体类的对象。用户在使用时可以直接根据工厂类去创建所需的实例,而无需了解这些对象是如何创建以及如何组织的。有利于整个软件体系结构的优化。
缺点:简单工厂模式违背了“开放封闭原则”,就是违背了“系统对扩展开放,对修改关闭”的原则,因为当我新增加一个产品的时候必须修改工厂类,相应的工厂类就需要重新编译一遍。
简单工厂的一个类图
产品接口:
public interface Iproduct {
public void saymethod();
}
产品的两个实现
public class ProductA implements Iproduct{
public void saymethod() {
System.out.println("A method");
}
}
public class ProductB implements Iproduct{
public void saymethod() {
System.out.println("B method");
}
}
工厂类
public class ProductFactory {
public Iproduct createInstance(char keyword){
switch (keyword) {
case 'A':
return new ProductA();
case 'B':
return new ProductB();
default:
return null;
}
}
}
客户端调用
public class Client {
public static void asaysomething(){
ProductFactory pf=new ProductFactory();
pf.createInstance('A').saymethod();
}
public static void bsaysomething(){
ProductFactory pf=new ProductFactory();
pf.createInstance('B').saymethod();
}
public static void main(String[]args){
asaysomething();
bsaysomething();
}
}
输出
A method
B method