3.抽象工厂模式
来源:互联网 发布:天下三女号捏脸数据 编辑:程序博客网 时间:2024/05/30 05:02
一、什么是抽象工厂模式
抽象工厂模式是所有形态的工厂模式中最为抽象和最其一般性的。抽象工厂模式可以向客户端提供一个接口,使得客户端在不必指定产品的具体类型的情况下,能够创建多个产品族的产品对象。
二、模式中包含的角色及其职责
1.抽象工厂(Creator)角色 (FruitFactory.java) 抽象工厂模式的核心,包含对多个产品结构的声明,任何工厂类都必须实现这个接口。
2.具体工厂( Concrete Creator)角色(WenshiFruitFactory.java, SouthFruitFactory.java, NorthFruitFactory.java) 具体工厂类是抽象工厂的一个实现,负责实例化某个产品族中的产品对象。
3.抽象(Product)角色 (Fruit.java) 抽象模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。
抽象工厂模式是所有形态的工厂模式中最为抽象和最其一般性的。抽象工厂模式可以向客户端提供一个接口,使得客户端在不必指定产品的具体类型的情况下,能够创建多个产品族的产品对象。
二、模式中包含的角色及其职责
1.抽象工厂(Creator)角色 (FruitFactory.java) 抽象工厂模式的核心,包含对多个产品结构的声明,任何工厂类都必须实现这个接口。
2.具体工厂( Concrete Creator)角色(WenshiFruitFactory.java, SouthFruitFactory.java, NorthFruitFactory.java) 具体工厂类是抽象工厂的一个实现,负责实例化某个产品族中的产品对象。
3.抽象(Product)角色 (Fruit.java) 抽象模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。
4.具体产品(Concrete Product)角色(NorthApple.java, NorthBanana.java, WenshiBanana.java等等) 抽象模式所创建的具体实例对象
Fruit.javapublic interface Fruit { /* * 采集 */ public void get(); }Apple.javapublic abstract class Apple implements Fruit{ /* * 采集 */ public abstract void get(); }SouthApple.javapublic class SouthApple extends Apple { @Override public void get() { System.out.println("采集南方苹果"); } }NorthApple.javapublic class NorthApple extends Apple { @Override public void get() { System.out.println("采集北方苹果"); } }WenshiApple.javapublic class WenshiApple extends Apple { @Override public void get() { System.out.println("采集温室苹果"); } }Banana.javapublic abstract class Banana implements Fruit{ /* * 采集 */ public abstract void get(); }NorthBanana.javapublic class NorthBanana extends Banana { @Override public void get() { System.out.println("采集北方香蕉"); } }SouthBanana.javapublic class SouthBanana extends Banana { @Override public void get() { System.out.println("采集南方香蕉"); } }WenshiBanana.javapublic class WenshiBanana extends Banana { @Override public void get() { System.out.println("采集温室香蕉"); } }FruitFactory.javapublic interface FruitFactory { //实例化Apple public Fruit getApple(); //实例化Banana public Fruit getBanana(); }NorthFruitFactory.javapublic class NorthFruitFactory implements FruitFactory { public Fruit getApple() { return new NorthApple(); } public Fruit getBanana() { return new NorthBanana(); } }SouthFruitFactory.javapublic class SouthFruitFactory implements FruitFactory { public Fruit getApple() { return new SouthApple(); } public Fruit getBanana() { return new SouthBanana(); } }WenshiFruitFactory.javapublic class WenshiFruitFactory implements FruitFactory { public Fruit getApple() { return new WenshiApple(); } public Fruit getBanana() { return new WenshiBanana(); } }MainClass.javapublic class MainClass { public static void main(String[] args) { FruitFactory ff = new NorthFruitFactory(); Fruit apple = ff.getApple(); apple.get(); Fruit banana = ff.getBanana(); banana.get(); FruitFactory ff2= new SouthFruitFactory(); Fruit apple2 = ff2.getApple(); apple2.get(); Fruit banana2 = ff2.getBanana(); banana2.get(); FruitFactory ff3 = new WenshiFruitFactory(); Fruit apple3 = ff3.getApple(); apple3.get(); Fruit banana3 = ff3.getBanana(); banana3.get(); } }
- 3.抽象工厂模式
- 3.抽象工厂模式
- 3.抽象工厂模式
- 3.抽象工厂模式
- 3.抽象工厂模式
- 3.抽象工厂模式
- 3.AbstractFactory-抽象工厂模式
- 3.AbstractFactory-抽象工厂模式
- 工厂模式 -- 抽象工厂
- 工厂模式-抽象工厂
- 工厂模式-抽象工厂
- 工厂模式/抽象工厂模式
- 工厂模式&&抽象工厂模式
- 工厂模式---抽象工厂模式
- 工厂模式&抽象工厂模式
- 工厂模式,抽象工厂模式
- 深入设计模式-3.抽象工厂模式
- 【模式】抽象工厂模式
- 位运算
- I/O系统
- Operation is not valid due to the current state of the object.
- poj1848
- 钱学森最后一次谈话:中国大学缺乏创新精神
- 3.抽象工厂模式
- MySQL5.1字符集设置
- 命令行参数解析
- 机器学习入门资料
- Linux内核入门(三)—— C语言基本功
- Android 2.3 StageFright 如何选定OMX 组件的
- 解读WINCE 5.0 KITL代码流程
- Android开机动画详解
- 改变字体大小