工厂模式是23种设计模式,它是定义一个实例化对象的工厂(本质为一个抽象类或接口),然后为每个品种都定义一个工厂(实现实例化对象的工厂),在每个品种工厂中决定创建哪个类的实例。也就是说实例化哪个类的对象交由具体的工厂去决定。
代码如下:
先定义一个鼠标类:
package FactoryPattern;
/**
* 鼠标
*/
public interface Mouse {
//鼠标点击
public void click();
}
再定义戴尔鼠标和惠普鼠标:
package FactoryPattern;
/**
* 惠普鼠标
*/
public class HPMouse implements Mouse{
@Override
public void click() {
// TODO Auto-generated method stub
System.out.println("click HPMouse ...");
}
}
package FactoryPattern;
/**
* 戴尔鼠标
*/
public class DellMouse implements Mouse{
@Override
public void click() {
// TODO Auto-generated method stub
System.out.println("click DellMouse ...");
}
}
定义创建鼠标的工厂:
package FactoryPattern;
/**
* 鼠标工厂,生产鼠标
*/
public interface MouseFactory {
public Mouse createMouse();
}
定义戴尔鼠标工厂和惠普鼠标工厂:
package FactoryPattern;
/**
* 惠普鼠标工厂
*/
public class HPMouseFactory implements MouseFactory{
@Override
public Mouse createMouse() {
// TODO Auto-generated method stub
return new HPMouse();
}
}
package FactoryPattern;
/**
* 戴尔鼠标工厂
*/
public class DellMouseFactory implements MouseFactory{
@Override
public Mouse createMouse() {
// TODO Auto-generated method stub
return new DellMouse();
}
}
运行测试类:
package FactoryPattern;
public class RunDemo {
public static void main(String[] args) {
System.out.println("*****create HPMouse*****");
MouseFactory hpMouseFactory = new HPMouseFactory();
Mouse hpMouse = hpMouseFactory.createMouse();
hpMouse.click();
System.out.println("************************");
System.out.println("*****create DellMouse*****");
MouseFactory dellMouseFactory = new DellMouseFactory();
Mouse dellMouse = dellMouseFactory.createMouse();
dellMouse.click();
}
}
运行结果:
参考文档:设计模式|菜鸟教程,《设计模式之禅》
上一篇:设计模式(二)——简单工厂模式
下一篇:设计模式(四)——抽象工厂模式