创建时间: | 2016/11/9 8:37 |
---|---|
作者: | tjhuey@163.com |
图图接下来将介绍第二种设计模式,工厂设计模式。工厂,见名知意,就是创建产品的。
同样在java中,是用来创建对象的。为什么用工厂模式呢,因为他可以解耦,可扩展。方便开发。
而最常用的就是静态工厂模式,(很多时候会结合单例模式,new出来的对象是单例的)
简单的UML图(有瑕疵)如下
package org.huey.partten.factory.factorymethod;
/**
* 抽象产品
* @author huey
*
*/
public interface Computer {
public void run();
}
package org.huey.partten.factory.factorymethod;
/*
* 工厂接口
* @author huey
*
*/
public interface ComputerFactory {
public Computer createComputer();
}
package org.huey.partten.factory.factorymethod;
/**
* 详细产品
* @author huey
*
*/
public class Dell implements Computer{
@Override
public void run() {
System.out.println(Dell.class.getSimpleName()+"跑起来了!");
}
}
package org.huey.partten.factory.factorymethod;
public class DellFactory implements ComputerFactory {
@Override
public Computer createComputer() {
return new Dell();
}
}
package org.huey.partten.factory.factorymethod;
public class Lenovo implements Computer{
@Override
public void run() {
System.out.println(this.getClass().getSimpleName()+"跑起来了!");
}
}
package org.huey.partten.factory.factorymethod;
public class LenovoFactory implements ComputerFactory{
@Override
public Computer createComputer() {
return new Lenovo();
}
}
package org.huey.partten.factory.factorymethod;
/**
* 测试
* @author huey
*
*/
public class FactoryMethodFactoryTest {
public static void main(String[] args) {
ComputerFactory dellFactory = new DellFactory();
Computer dell = dellFactory.createComputer();
dell.run();
ComputerFactory lenovoFactory = new LenovoFactory();
Computer lenovo = lenovoFactory.createComputer();
lenovo.run();
}
}
测试