简单工厂模式并不是23种设计模式中的一种,它主要是定义一个工厂类来负责创建其他类的实例。典型的表现形式为在调用创建其他类实例的时候需要传递一个参数,工厂类根据传递的参数决定创建哪个类的实例。
代码如下:
先定义一个鼠标类:
package SimpleFactory;
/**
* 鼠标
*/
public interface Mouse {
//鼠标点击
public void click();
}
再定义鼠标类的两个实现类,戴尔鼠标和惠普鼠标:
package SimpleFactory;
/**
* 戴尔鼠标
*/
public class DellMouse implements Mouse{
@Override
public void click() {
// TODO Auto-generated method stub
System.out.println("click DellMouse ...");
}
}
package SimpleFactory;
/**
* 惠普鼠标
*/
public class HPMouse implements Mouse{
@Override
public void click() {
// TODO Auto-generated method stub
System.out.println("click HPMouse ...");
}
}
定义创建鼠标实例的工厂(简单工厂模式的核心):
package SimpleFactory;
/**
* 鼠标工厂,生产鼠标
*/
public class MouseFactory {
private static String HPMouseName = "HPMouse";
private static String DellMouseName = "DellMouse";
public static Mouse createMouse(String mouseName){
Mouse mouse = null;
if(HPMouseName.equals(mouseName)){
mouse = new HPMouse();
}else if(DellMouseName.equals(mouseName)){
mouse = new DellMouse();
}
return mouse;
}
}
运行测试类:
package SimpleFactory;
public class RunDemo {
private static String HPMouseName = "HPMouse";
private static String DellMouseName = "DellMouse";
public static void main(String[] args) {
Mouse hpMouse = MouseFactory.createMouse(HPMouseName);
hpMouse.click();
Mouse dellMouse = MouseFactory.createMouse(DellMouseName);
dellMouse.click();
}
}
运行结果:
缺点:违背了设计模式六大原则之一的开闭原则,新增一个产品品种的时候除了新增一个产品实现共同的接口之外,还要去修改工厂的创造方法。
参考文档:设计模式|菜鸟教程,《设计模式之禅》
上一篇:设计模式(一)
下一篇:设计模式(三)——工厂模式