抽象工厂模式-Abstract Factory Pattern
来源:互联网 发布:单点登录系统源码 编辑:程序博客网 时间:2024/06/06 01:27
基本概念
抽象工厂模式,提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
结构图
上图摘自《大话设计模式》
应用场景
一个系统的产品有多于一个的产品族,同属于同一个产品族的产品是在一起使用的,这一约束必须在系统的设计中体现出来,系统提供一个产品类的库,所有的产品以同样的接口出现,从而使客户端不依赖于实现。
源码示例
1.创建电脑产品接口
package com.spook.abstractfactory;/** * 电脑产品接口 */public interface Computer {public void produce();}2.创建一个具体电脑实现类
package com.spook.abstractfactory;/** * 模拟具体电脑产品类 */public class MacBookAir implements Computer {@Overridepublic void produce() {// TODO Auto-generated method stubSystem.out.println("MacBookAir电脑");}}3.创建另一个电脑实现类
package com.spook.abstractfactory;/** * 模拟具体电脑产品类 */public class MacBookPro implements Computer {@Overridepublic void produce() {// TODO Auto-generated method stubSystem.out.println("MacBookPro电脑");}}
4.创建手机产品接口
package com.spook.abstractfactory;/** * 手机产品接口 */public interface MobilePhone {public void produce();}5.创建一个手机实现类
package com.spook.abstractfactory;/** * 模拟具体手机产品类 */public class IPhone6 implements MobilePhone{@Overridepublic void produce() {// TODO Auto-generated method stubSystem.out.println("iPhone6 手机");}}6.创建另一个手机实现类
package com.spook.abstractfactory;/** * 模拟具体手机产品类 */public class IPhone6plus implements MobilePhone {@Overridepublic void produce() {// TODO Auto-generated method stubSystem.out.println("iPhone6 Plus手机");}}7.创建一个工厂接口
package com.spook.abstractfactory;/** * 模拟苹果公司生产工厂,假定有两种产品:电脑和手机 */public interface AppleFactory {public Computer createComputer();public MobilePhone createPhone();}8.创建台电工厂,实现工厂接口
package com.spook.abstractfactory;/** * 台电工厂,假定能够生产MacBookAir电脑和iPhone6 */public class TeclastFactory implements AppleFactory {@Overridepublic Computer createComputer() {// TODO Auto-generated method stubreturn new MacBookAir();}@Overridepublic MobilePhone createPhone() {// TODO Auto-generated method stubreturn new IPhone6();}}9.创建富士康工厂,实现工厂接口
package com.spook.abstractfactory;/** * 富士康工厂,假定能够生产MacBookPro电脑和iPhone6 plus */public class FoxconnFactory implements AppleFactory {@Overridepublic Computer createComputer() {// TODO Auto-generated method stubreturn new MacBookPro();}@Overridepublic MobilePhone createPhone() {// TODO Auto-generated method stubreturn new IPhone6plus();}}10.测试类
package com.spook.abstractfactory;/** * 测试类 */public class Test {public static void main(String[] args) {// TODO Auto-generated method stubAppleFactory teclastFactory = new TeclastFactory();System.out.println("台电工厂生产的产品如下:");Computer computer = teclastFactory.createComputer();computer.produce();MobilePhone phone = teclastFactory.createPhone();phone.produce();AppleFactory foxcoonFactory = new FoxconnFactory();System.out.println("------------------");System.out.println("富士康工厂生产的产品如下:");computer = foxcoonFactory.createComputer();computer.produce();phone = foxcoonFactory.createPhone();phone.produce();}}运行测试类输出如下内容:
台电工厂生产的产品如下:MacBookAir电脑iPhone6 手机------------------富士康工厂生产的产品如下:MacBookPro电脑iPhone6 Plus手机
0 0
- 抽象工厂模式(Abstract Factory Pattern)
- 抽象工厂模式(Abstract Factory Pattern)
- 抽象工厂模式 Abstract Factory Pattern
- 抽象工厂模式(abstract factory pattern)
- 抽象工厂模式(Abstract Factory Pattern)
- 抽象工厂模式 The Abstract Factory Pattern
- 抽象工厂模式(Abstract Factory Pattern)
- 抽象工厂模式(Abstract Factory Pattern )
- 抽象工厂模式(Abstract Factory Pattern)
- 抽象工厂模式(Abstract Factory Pattern)
- 抽象工厂模式(Abstract Factory Pattern)
- 抽象工厂模式(Abstract Factory Pattern)
- 抽象工厂模式(Abstract Factory Pattern)小结
- 05.抽象工厂模式【ABSTRACT FACTORY PATTERN】
- 抽象工厂模式-Abstract Factory Pattern
- 抽象工厂模式(Abstract Factory Pattern)
- 抽象工厂模式 Abstract Factory Pattern
- 抽象工厂模式(Abstract Factory Pattern)
- mmap 函数
- AngularJs 初学
- linux kafka 搭建运行环境
- .net连接sqlite数据库
- Xcode 报错: Extra argument in call
- 抽象工厂模式-Abstract Factory Pattern
- HDU 5078--Osu!【水题】
- Squid Epoll网络模型
- poj 1837 dp
- C++内联函数
- wireshark抓包图解 TCP三次握手/四次挥手详解
- Android通过Xutils注解实例化以及事件绑定
- Squares
- enum类型,定义、变量长度、与int转换、与string转换