三 抽象工厂模式
2016-04-26 21:32
363 查看
抽象工厂模式
定义:
抽象工厂模式可以向客户端提供一个接口,使得客户端在不必指定类实例的具体类型的情况下,能够创建多个类实例族的类实例对象。
例如:以上一章节的例子为例。假如Apple又分为Apple1和Apple2,Banana也分为Banana1和Banana2。我们希望对每类水果的每种类型区分, 并可以创建多个水果实例。此时,便可以考虑抽象工厂模式,即:对类实例进一步抽象,对每一种类实例族进行创建。
抽象工厂角色:
public interface FruitFactory { //实例化Apple public Fruit getApple(); //实例化Banana public Fruit getBanana(); }
抽象角色
其中包括公共的抽象角色和具体类的进一步抽象。public interface Fruit { public void get(); }
public abstract class Apple implements Fruit{ public abstract void get(); }
public abstract class Banana implements Fruit{ public abstract void get(); }
具体工厂角色
public class Fruit1Factory implements FruitFactory { public Fruit getApple() { return new Apple1(); } public Fruit getBanana() { return new Banana1(); } }
public class Fruit2Factory implements FruitFactory { public Fruit getApple() { return new Apple2(); } public Fruit getBanana() { return new Banana2(); } }
具体类实例
public class Apple1 extends Apple { public void get() { System.out.println("Apple1"); } }
public class Banana1 extends Banana { public void get() { System.out.println("Banana1"); } }
public class Apple2 extends Apple { public void get() { System.out.println("Apple2"); } }
public class Banana2 extends Banana { public void get() { System.out.println("Banana2"); } }
调用如下:
public class MainClass { public static void main(String[] args) { FruitFactory ff = new Fruit1Factory(); Fruit apple = ff.getApple(); apple.get(); Fruit banana = ff.getBanana(); banana.get(); FruitFactory ff2= new Fruit2Factory(); Fruit apple2 = ff2.getApple(); apple2.get(); Fruit banana2 = ff2.getBanana(); banana2.get(); } }
相关文章推荐
- PropertyChangeListener简单理解
- 什么是设计模式
- 设计模式之创建型模式 - 特别的变量问题
- 七、设计模式——装饰模式
- 设计模式总结
- 设计模式之创建型模式
- 浅谈设计模式的学习
- Ruby设计模式编程之适配器模式实战攻略
- 实例讲解Ruby使用设计模式中的装饰器模式的方法
- 设计模式中的模板方法模式在Ruby中的应用实例两则
- Ruby设计模式编程中对外观模式的应用实例分析
- 实例解析Ruby设计模式编程中Strategy策略模式的使用
- Ruby中使用设计模式中的简单工厂模式和工厂方法模式
- Ruby使用设计模式中的代理模式与装饰模式的代码实例
- 详解组合模式的结构及其在Ruby设计模式编程中的运用
- C#编程中使用设计模式中的原型模式的实例讲解
- 使用设计模式中的工厂方法模式进行C#编程的示例讲解
- 实例解析C#设计模式编程中简单工厂模式的使用
- 详解C#设计模式编程中生成器模式的使用
- 深入解析C#设计模式编程中对建造者模式的运用