OC编程之道-创建对象之工厂方法】的更多相关文章

一 何为工厂方法模式?(what) 定义创建对象的接口,让子类决定实例化哪一个类,工厂方法是的一个类的实例化延迟到其子类. 工厂方法创建的对象拥有一组共同的行为,所以往类层次结构中引入新的具体产品并不需要修改客户端代码. 二 何时使用工厂方法?(where) 编译时期无法准确预期要创建的对象的类. eg:[NSNumber numberWithBool:YES];工厂方法模式对框架设计者特别有用. 三 实现工厂方法 (how) CanvasView定义了任意CanvasView类型的默认行为.其…
定义:提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类.       <AbstractProductA> <AbstractProductB> <AbstractFactory>    createProuductA        createProductB <ConcreteFactory1>         createProductA->productA1        createProductB->productB…
一 何为单例singleton模式?(what) 保证一个类只有一个实例,并提供一个访问它的全局访问点. 二 何时使用单例模式?(where) 1类只能有一个实例,而且必须从一个为人熟知的访问点对其访问,比如工厂方法. 2这个唯一实例只能通过子类化进行扩展,而且扩展的对象不会破坏客户端代码. 为什么不用静态全局变量或是类方法呢? 如果一个程序中两个人分别在两个地方定义了相同类型的静态变量.那么一个程序中就会有两个相同的全局对象类型. 类方法提供了共享服务,不用创建其对象就可以访问,资源的唯一实例…
一 什么是原型模式?(what) 有些对象的创建代价过大或过于复杂,要是可以重建相同的对象并作轻微的改动,事情会容易的多(效率变高).典型的例子是复制组合结构(eg树形结构),从零开始构建一个树型组合体非常困难.可以通过轻微的改动重用已有的对象,以适应程序中的特定情况. 原型模式属于创建性设计模式,通过拷贝的方式快速创建一个对象,这里拷贝的方式有两种1)浅拷贝2)深拷贝. 二 何时使用原型模式?(where) 1要实例化的类要在运行时才确定. 2很多相关的类,其行为略有不同,而且主要差异在于内部…
生成器模式也叫建造者模式,一般是用来构造复杂对象的一种模式.client(客户)-director(指导者)-builder(构造者)-product(产品). 生成器模式能帮助构建设计部件与表现的各种组合的对象.否则知道构建对象所有细节的director可能会变成一个庞大的“神”类.但是在做应用的时候一般不会遇到如此复杂的类(请求?),只有在做游戏时,构造涉及各种特征的角色的时候,应该好好使用该模式. 例子: 一个追逐游戏,假定有两个角色,敌人和游戏者.这两个角色有一些基本trait,如力量s…
  工厂方法模式:   定义:为创建对象定义一个接口,让子类决定实例化哪个类.工厂方法让一个类的实例化延迟至子类.   应用场景: 客户类不关心使用哪个具体类,只关心该接口所提供的功能: 创建过程比较复杂,例如需要初始化其他关联的资源类,读取配置文件等: 接口有很多具体实现或者抽象有很多具体子类时,你可能需要为客户代码写一大串 if-else 逻辑来决定运行时使用哪个具体实现或者具体子类: 不希望给客户程序暴露过多此类的内部结构,隐藏这些细节可以降低耦合度: 优化性能,比如缓存大对象或者初始化比…
已有的类与新的接口之间不兼容的问题相当普遍,人们已为它找到了一个解决方案.这个解决方案就是适配器. 1 何为适配器 what 适配器的主要作用是把被适配者的行为传递给管道另一端的客户端. 将一个类的接口转换成客户希望的另外一个接口.适配器模式使得原本由于接口不兼容而不能一起工作的那些类一起工作. 实现适配器有两种方式: 1)类适配器:通过继承来适配两个接口.继承Adaptee,遵从<Target>协议. 2)对象适配器:通过组合来适配.遵从<Target>协议,组合了一个队Adap…
十一回了趟老家,十一前工作一大堆忙成了狗,十一回来后又积累了一大堆又 忙成了狗,今天刚好抽了一点空开始写工厂方法模式 我看了<Head First 设计模式>P109--P133 这25页,讲述了我们为什么要用工厂模式,里面用做pizza的例子讲的特别细腻.看完了就能很清楚的知道为什么要用工厂模式. 年龄越大越不喜欢一知半解,深刻的了解某些未知的事或物以后,它再出现就不怕了 #'New'有什么不对劲? 在技术上,new没有错,这是语言的基础部分.真正的犯人是我们的老朋友 ‘改变’, 以及它是如…
背景 很早之前就已经自己翻译了,先简单的贴出来,并做一下回顾. 条款1 优先使用静态工厂方法而非构造函数来创建对象 允许客户端创建一个实例的传统方法是:提供一个公共构造函数:有另外一个必须成为每个程序员的编程技巧:优先使用类提供的只简单返回实例的公共静态工厂方法来创建对象.这有一个简单的Boolean类的例子:这个方法转换一个原生的boolean类型的值为一个Boolean的实例. public static Boolean valueOf(boolean b){ return b?Boolea…
通过上例看oc创建实例有点麻烦,oc里面可以创建工厂方法可以让这个操作更简单一些(其实就是c#或者java里面的静态方法). 新建一个“Cocoa Touch Class”文件,命名为People People.h 写入 @interface People : NSObject{ int _age; NSString* _name; } -(int)getAge; -(NSString*)getName; +(People*)peopleWithAge:(int)age andName:(NSS…