《设计模式》第三章——Abstract Factory模式
来源:互联网 发布:耶律大石 知乎 编辑:程序博客网 时间:2024/06/15 15:15
一、典型的应用场景
现在有一套产品系列抽象接口:A,B,C,D,并且有两套以上的实现这些抽象接口的具体产品系列,比如说具体产品系列1:1A,1B,1C,1D和具体产品系列2:2A,2B,2C,2D
用户直接跟产品系列抽象接口A,B,C,D交互,具体的产品系列在别处指定,现在需要能够方便无痕地从具体产品系列1转换到具体产品系列2
二、结构图
三、优缺点
1)分类了具体的类,客户只与抽象接口进行交互
2)易于切换产品系列,比如本来使用的是Window窗口系统下的组件,可以很容易切换到使用X窗口系统下的组件
3)有利于产品的一致性,比如要么都是Window窗口系统下的组件,要么都是X窗口系统下的组件,不可能是一部分组件属于Window窗口系统,另外一部分属于X窗口系统
4)难以支持新种类的产品,要增加一个产品种类,得在抽象工厂类中增加相应的getXXX()方法,然后所有的具体工厂类中都得实现相应的getXXX()方法
四、代码实例
package designPattern;interface Animal { void print();}interface Tool { void print();}interface AbstractFactory { Animal getAnimal(); Tool getTool();}class Dog implements Animal { public void print() { System.out.println("I am a dog"); }}class Cat implements Animal { public void print() { System.out.println("I am a cat"); }}class Knife implements Tool { public void print() { System.out.println("I am a knife"); }}class Scissor implements Tool { public void print() { System.out.println("I am a scissor"); }}class ConcreteFactory1 implements AbstractFactory { public Dog getAnimal() { return new Dog(); } public Knife getTool() { return new Knife(); }}class ConcreteFactory2 implements AbstractFactory { public Cat getAnimal() { return new Cat(); } public Scissor getTool() { return new Scissor(); }}public class AbstractFactoryExample { public static void main(String[] args) { AbstractFactoryExample example = new AbstractFactoryExample(); example.run(new ConcreteFactory1()); example.run(new ConcreteFactory2()); } public void run(AbstractFactory factory) { factory.getAnimal().print(); factory.getTool().print(); }}
0 0
- 《设计模式》第三章——Abstract Factory模式
- 白话设计模式——Abstract Factory
- C# 设计模式——Abstract Factory
- 设计模式——Abstract Factory模式、Singleton模式
- 设计模式(Abstract Factory)
- 设计模式-Abstract Factory
- 设计模式--Abstract Factory
- 设计模式——抽象工厂模式【Abstract Factory Pattern】
- 设计模式(五)——Abstract Factory模式
- 设计模式——抽象工厂模式(Abstract Factory)
- Java设计模式 —— 抽象工厂模式 (Abstract Factory)
- 设计模式 —— 抽象工厂模式(Abstract Factory)
- 设计模式——抽象工厂模式(Abstract Factory)
- 23种设计模式学习—abstract factory模式
- JAVA设计模式 — 抽象工厂模式(Abstract Factory)
- 设计模式-Abstract Factory模式
- 设计模式 - Abstract Factory模式
- 设计模式--Abstract Factory模式
- WCF基础
- Android横竖屏切换小结
- 海马汽车经销商管理系统技术解析(十四)出厂
- Android开发之MediaRecorder类详解
- 免费宾馆软件 JDPMS
- 《设计模式》第三章——Abstract Factory模式
- Flume NG源码分析(一)基于静态properties文件的配置模块
- android之cannot convert from Fragment1 to Fragment
- 树莓派启动方法大全
- 纪念第一篇
- Isomorphic Strings [LeetCode]
- [POJ1741]Tree |点分治
- EnumSet
- SpringMVC路径伪装取值