java设计模式_抽象工厂模式
来源:互联网 发布:js字符串加逗号 编辑:程序博客网 时间:2024/06/10 17:46
一、什么是抽象工厂模式
抽象工厂模式是所有形态的工厂模式中最为抽 象和最其一般性的。抽象工厂模式可以向客户端 提供一个接口,使得客户端在不必指定产品的具
体类型的情况下,能够创建多个产品族的产品对 象。
二、产品族和产品等级结构
三、模式中包含的角色及其职责
1.抽象工厂(Creator)角色抽象工厂模式的核心,包含对多个产品结构的声明,任何工厂类都必须实现这个接口。
2.具体工厂( Concrete Creator)角色具体工厂类是抽象工厂的一个实现,负责实例化某个产品族中的产品对象。
3.抽象(Product)角色抽象模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。
4.具体产品(Concrete Product)角色抽象模式所创建的具体实例对象 总结:抽象工厂中方法对应产品结构,具体工厂对应产品族。
//示例1:public interface Fruit { /** * 采集 */ public void get();}public abstract class Apple implements Fruit { /* * 采集 */ public abstract void get();}public class NorthApple extends Apple { /* * 采集 */ @Override public void get() { System.out.println("采集北方的平果"); }}public class SouthApple extends Apple { /* * 采集 */ @Override public void get() { System.out.println("采集南方的平果"); }}public abstract class Banana implements Fruit { /* * 采集 */ public abstract void get();}public class NorthBanana implements Fruit { /* * 采集 */ public void get(){ System.out.println("采集北方的香焦"); }}public class SouthBanana implements Fruit { /* * 采集 */ public void get(){ System.out.println("采集南方的香焦"); }}public interface FruitFactory { //实例化Apple public Fruit getApple(); //实例化Banana public Fruit getBanana();}public class NorthFruitFactory implements FruitFactory { @Override public Fruit getApple() { return new NorthApple(); } @Override public Fruit getBanana() { return new NorthBanana(); }}public class SouthFruitFactory implements FruitFactory { @Override public Fruit getApple() { return new SouthApple(); } @Override public Fruit getBanana() { return new SouthBanana(); }}public class MainClass { public static void main(String[] args) throws Exception { FruitFactory northFruitFactory = new NorthFruitFactory(); Fruit northApple = northFruitFactory.getApple(); northApple.get(); Fruit northBanana = northFruitFactory.getBanana(); northBanana.get(); FruitFactory southFruitFactory = new SouthFruitFactory(); Fruit southApple = southFruitFactory.getApple(); southApple.get(); Fruit southBanana = southFruitFactory.getBanana(); southBanana.get(); }}//采集北方的苹果//采集北方的香焦//采集南方的苹果//采集南方的香焦//*现在考虑增加一个温室类型水果public class WenshiApple extends Apple { @Override public void get() { System.out.println("采集温室苹果"); }}public class WenshiBanana extends Banana { @Override public void get() { System.out.println("采集温室香焦"); }}public class WenshiFruitFactory implements FruitFactory { @Override public Fruit getApple() { return new WenshiApple(); } @Override public Fruit getBanana() { return new WenshiBanana(); }}public class MainClass { public static void main(String[] args) throws Exception { FruitFactory northFruitFactory = new NorthFruitFactory(); Fruit northApple = northFruitFactory.getApple(); northApple.get(); Fruit northBanana = northFruitFactory.getBanana(); northBanana.get(); FruitFactory southFruitFactory = new SouthFruitFactory(); Fruit southApple = southFruitFactory.getApple(); southApple.get(); Fruit southBanana = southFruitFactory.getBanana(); southBanana.get(); FruitFactory wenshiFruitFactory = new WenshiFruitFactory(); Fruit wenshiFruit = wenshiFruitFactory.getApple(); wenshiFruit.get(); Fruit wenshiBanana = wenshiFruitFactory.getBanana(); wenshiBanana.get(); }}//采集北方的苹果//采集北方的香焦//采集南方的苹果//采集南方的香焦//采集温室苹果//采集温室香焦
0 0
- Java设计模式_抽象工厂模式
- java设计模式_抽象工厂模式
- Java设计模式_(创建型)_抽象工厂模式
- java基础_设计模式_抽象工厂模式
- java设计模式03_抽象工厂模式
- 大话设计模式_抽象工厂模式
- 设计模式_抽象工厂模式
- 设计模式03_抽象工厂模式
- 设计模式04_抽象工厂模式
- 设计模式_抽象工厂模式
- 设计模式05_抽象工厂模式
- 设计模式_抽象工厂模式(4)
- java设计模式--抽象工厂
- Java设计模式-抽象工厂
- Java设计模式--抽象工厂
- java设计模式-抽象工厂
- Java设计模式-抽象工厂设计模式
- java设计模式之抽象工厂模式
- ASCII码表
- 小菜一碟 - WHCTF - 2016 - Reverse
- Big Number
- POJ3623 Best Cow Line,Gold
- 校招季--献给前端求职路上的你们(JS)
- java设计模式_抽象工厂模式
- nyoj 448 寻找最大数
- activity的进入与退出动画
- 设计模式 (7)类图四
- 工作中的小问题之日历显示篇
- Flash中的attachMovie用法之“深度”属性
- LeetCode-136:Single Number
- hdu 5750 Dertouzos
- SQL四种语言:DDL DML DCL TCL 及实例