ofa clas pri com urn 两层 实现 需求
工厂方法模式:简单工厂模式的进一步抽象和推广。工厂方法模式把简单工厂中的具体的工厂类划分为两层:抽象工厂层 + 具体工厂层,类图如下:
涉及到的角色:
抽象产品角色:所有产品的共同父类或共有接口,用以实现多态。
- 1 //电脑接口
- 2 public interface Icomputer {
- 3
- }
具体产品角色:实现抽象产品角色所声明的接口。
- 1 //戴尔电脑
- 2 public class Dell implements Icomputer {
- 3
- }
- 1 //联想电脑
- 2 public class Lenovo implements Icomputer {
- 3
- }
抽象工厂角色:工厂方法模式的核心,创建对象工厂类必须继承或实现它,实际系统中常常是个抽象类。
- 1 //定义工厂,它是个抽象类
- 2 public abstract class AbstractFactory {
- 3 public abstract Icomputer createComputer();
- 4
- }
具体工厂角色:实现了抽象工厂接口的具体类,应用程序调用它以创建具体产品。
- 1 //戴尔工厂
- 2 public class DellFactory extends AbstractFactory {
- 3@Override 4 public Icomputer createComputer() {
- 5
- return new Dell();
- 6
- }
- 7
- }
- 1 //联想工厂
- 2 public class LenovoFactory extends AbstractFactory {
- 3@Override 4 public Icomputer createComputer() {
- 5
- return new Lenovo();
- 6
- }
- 7
- }
应用实例:
- 1 //客户端
- 2 public class Client {
- 3 private void mian() {
- 4 AbstractFactory factory = null;
- 5 factory = new DellFactory();
- 6 factory.createComputer();
- 7 factory = new LenovoFactory();
- 8 factory.createComputer();
- 9
- }
- 10
- }
这样做的好处就是只需要有 Icomputer.java 和 AbstractFactory.java 编译就能通过,另外当需求变化时只需要增加或者删除相应的类就可以。比如要增加华硕电脑只需增加 Asus 和 AsusFactory 俩个类即可。
工厂模式(二)
来源: http://www.bubuko.com/infodetail-2093969.html