意图 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. 适用性 在以下情况可以使用 Abstract Factory模式 • 一个系统要独立于它的产品的创建.组合和表示时. • 一个系统要由多个产品系列中的一个来配置时. • 当你要强调一系列相关的产品对象的设计以便进行联合使用时. • 当你提供一个产品类库,而只想显示它们的接口而不是实现时. 结构 模式结构图如下所示:…
一.抽象工厂模式介绍: 1.什么是抽象工厂模式: 抽象工厂模式是所有形态的工厂模式中最为抽象和最具有一般性的一种形态,抽象工厂模式向客户端提供一个接口,使得客户端在不知道具体产品的情类型的情况下,创建多个产品族中的产品 2.抽象工厂模式的使用情况: 系统的产品多于一个产品族,系统只消费一个产品族的产品的时候,一般使用抽象工厂模式. 3.抽象工厂模式和工厂方法模式的不同: (1)工厂方法模式针对一个产品等级结构:抽象工厂模式针对多个产品等级结构. (2)工厂方法模式中一个具体的工厂只创建一种产品,…
1. 简单工厂模式 如何理解简单工厂,工厂方法, 抽象工厂三种设计模式? 简单工厂方法包含:父类拥有共同基础接口,具体子类实现子类特殊功能,工厂类根据参数区分创建不同子类实例.该场景对应的UML图如下所示: 代码结构如下 Animal 类 @interface Animal :NSObject @proterty(nonatomic,strong) NSString *name; -(void)laugh; @end Dog类 @interface Dog:Animal @end Cat类 @i…
先编一个这么久不写的理由 上周我终于鼓起勇气翻开了headfirst设计模式这本书,看看自己下一个设计模式要写个啥,然后,我终于知道我为啥这么久都没写设计模式了,headfirst的这个抽象工厂模式,额,我看了好几次,都不太理解. 在我的印象中,简单工厂,工厂方法,抽象工厂,这三个东西应该是层层递进的,然后我带着这个思路去看,emmmm,真的没看懂,还好最近又补了一遍<大话设计模式>,揣着刚刚温习了的新知识,然后又上了headfirst这条船,我感觉我这次应该是看懂了. 所以不写并不是因为忙,…
具体参考抽象工厂(AbstractFactory)模式-创建型模式,本文在FactoryMethod工厂方法模式(创建型模式)的基础上进行业务进一步抽象,不做详细原理介绍. 1.在FactoryMethod工厂方法模式(创建型模式)的基础上,提出了一个代码上的需求,需要对前面的风格进行抽象,将相同风格的道路和房屋工厂类型进行抽象,这就是抽象工厂,代码如下: #region 抽象工厂 ///// <summary> ///// 抽象的游戏建造系统 ///// </summary> p…
一.原则 1.单一职责原则 (Single Responsiblity Principle SRP) 2.开闭原则(Open Closed Principle,OCP) 3.里氏替换原则(Liskov Substitution Principle,LSP) 4.依赖倒转原则(Dependency Inversion Principle,DIP) 5.接口隔离原则(Interface Segregation Principle,ISP) 6.合成/聚合复用原则(Composite/Aggregat…
一.工厂模式(Factory):通过让子类决定该创建的对象是什么,来达到将对象创建的过程封装的目的,工厂方法让类的实例化推迟到子类 (1)涉及角色:抽象产品,具体产品,抽象创建者,具体创建者.                (2)实例:    抽象产品类 public abstract class ProductNoodle { public abstract String description(); } 具体产品类 public class ConcreteNoodleA extends P…
对于iOS开发,举例Cocoa框架下的几个设计模式为大家分析.当然,Cocoa框架下关于设计模式的内容远远不止这些,我们选择了常用的几种:单例模式.委托模式.观察者模式.MVC模式. 委托模式 委托模式从GoF 设计装饰(Decorator).适配器(Adapter)和模板方法(Template Method)等模式演变而来.几乎每一个应用都会或多或少地使用到委托模式.不只是CocoaTouch框架,在Cocoa框架中委托模式也得到了广泛的应用. 问题提出 对于应用生命周期的非运行状态——应用启…
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAW0AAABvCAIAAACo3AbKAAALvUlEQVR4nO1dUa7cOA7U/c+zwJxkf4…
Block :block 实际上就是 Objective-C语言对闭包的实现 闭包(Closure):闭包就是一个函数,或者一个指向函数的指针,加上这个函数执行的非局部变量.闭包允许一个函数访问声明该函数运行上下文中的变量,甚至可以访问不同运行上文中的变量. 1 block 的原型 和 定义 *block的 原型: int  ( ^ sumblock ) ( int , int ); 上面的代码声明了一个block(^)的原型,名字叫做 sumblock,包含两个 int 型的参数,返回值为 i…