23设计模式之抽象工厂(Abstract Factory)
来源:互联网 发布:日历设计软件 编辑:程序博客网 时间:2024/06/15 02:19
返回目录
1 概述
抽象工厂(Abstract Factory)属于创建型模式中的一种,提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
2 适用性
- 一个系统要独立于它的产品的创建、组合和表示时。
- 一个系统要由多个产品系列中的一个来配置时。
- 当你要强调一系列相关的产品对象的设计以便进行联合使用时。
- 当你提供一个产品类库,而只想显示它们的接口而不是实现时。
3 参与者
- AbstractFactory:声明一个创建抽象产品对象的操作接口。
- ConcreteFactory:实现创建具体产品对象的操作。
- AbstractProduct:为一类产品对象声明一个接口。
- ConcreteProduct:定义一个将被相应的具体工厂创建的产品对象,实现AbstractProduct接口。
- Client:仅使用由AbstractFactory和AbstractProduct类声明的接口
4 类图
5 代码实现
//// YJAbstractFactory.swift// DesignPattern//// CSDN:http://blog.csdn.net/y550918116j// GitHub:https://github.com/937447974/Blog//// Created by yangjun on 15/11/26.// Copyright © 2015年 阳君. All rights reserved.//import Cocoa/// CatProtocol为一类产品对象声明一个协议。private protocol CatProtocol { func eat()}/// WhiteCat定义一个将被相应的具体工厂创建的产品对象。实现CatProtocol协议private class WhiteCat: CatProtocol { func eat() { print("The white cat is eating!") }}/// BlackCat定义一个将被相应的具体工厂创建的产品对象。实现CatProtocol协议private class BlackCat: CatProtocol { func eat() { print("The black cat is eating!") }}// MARK: -/// DogProtocol为一类产品对象声明一个协议。private protocol DogProtocol { func eat()}/// WhiteDog定义一个将被相应的具体工厂创建的产品对象。实现DogProtocol协议private class WhiteDog: DogProtocol { func eat() { print("The white dog is eating!") }}/// BlackDog定义一个将被相应的具体工厂创建的产品对象。实现DogProtocol协议private class BlackDog: DogProtocol { func eat() { print("The black dog is eating!") }}// MARK: -/// AnimalFactoryProtocol声明一个创建抽象产品对象的操作协议。private protocol AnimalFactoryProtocol { /// 创建ICat func createCat() -> CatProtocol /// 创建IDog func createDog() -> DogProtocol}/// WhiteAnimalFactory 实现创建具体产品对象的操作。private class WhiteAnimalFactory: AnimalFactoryProtocol { func createCat() -> CatProtocol { return WhiteCat() } func createDog() -> DogProtocol { return WhiteDog() }}/// BlackAnimalFactory 实现创建具体产品对象的操作。private class BlackAnimalFactory: AnimalFactoryProtocol { func createCat() -> CatProtocol { return BlackCat() } func createDog() -> DogProtocol { return BlackDog() }}// MARK: -/// 抽象工厂class YJAbstractFactory: YJTestProtocol { func test() { let blackAnimalFactory = BlackAnimalFactory() let whiteAnimalFactory = WhiteAnimalFactory() var cat = blackAnimalFactory.createCat() cat.eat() cat = whiteAnimalFactory.createCat() cat.eat() var dog = blackAnimalFactory.createDog() dog.eat() dog = whiteAnimalFactory.createDog() dog.eat() }}
其他
源代码
Framework
文档修改记录
版权所有
CSDN:http://blog.csdn.net/y550918116j
GitHub:https://github.com/937447974/Blog
0 0
- 【设计模式】之 Abstract Factory 抽象工厂
- 设计模式之:抽象工厂(Abstract Factory)
- 设计模式之抽象工厂Abstract Factory
- 设计模式之抽象工厂Abstract Factory
- 23种设计模式之抽象工厂(Abstract Factory)
- 23设计模式之抽象工厂(Abstract Factory)
- 23设计模式之抽象工厂(Abstract Factory)
- 设计模式笔记之工厂模式--抽象工厂(Abstract Factory)
- .Net设计模式之抽象工厂模式(Abstract Factory)
- Net设计模式之抽象工厂模式(Abstract Factory Pattern)
- 设计模式(二)之Abstract Factory - 抽象工厂模式
- 设计模式读书笔记之抽象工厂模式(Abstract Factory)
- 设计模式之二(抽象工厂模式)(Abstract Factory)
- Java设计模式之抽象工厂(Abstract Factory)模式
- 设计模式之(十一、抽象工厂模式Abstract Factory)
- JAVA设计模式之抽象工厂(Abstract Factory)模式
- 设计模式-创建型模式之 Abstract Factory(抽象工厂)
- 设计模式之六 --- 抽象工厂模式(Abstract Factory)
- Android开发之第一个小项目--我的MP3播放器(一)
- 如何正确选择会计培训班
- 协同过滤算法简述
- 查询索引碎片
- 23设计模式之策略模式(Strategy)
- 23设计模式之抽象工厂(Abstract Factory)
- Android studio asserts文件夹应该放哪儿?
- 数据库索引的实现原理
- 解决jenkins输出log中文乱码问题
- XCTest
- 为嵌套在左右滑动的UIScrollview上的UITableView增加滑动删除
- J2EE开发技术点6:Proxool数据库连接池
- maven
- eclipse中将一个项目作为library导入另一个项目中