![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
小柴的生活观
重来一次认真的阅读和写作!
展开
-
单例模式
对象只要利用自己的属性完成自己的任务,那该对象就是承担责任。除了维持自身的一致性,该对象无需承担其他任何责任。如果该对象还承担其他责任,而其它对象又依赖于该特定对象所承担的责任,就需要得到该特定的对象单例模式的目的将类的责任集中到唯一的单体对象中,确保该类只有一个实例,并且为该类提供一个全局访问点单例模式的难点不在于单例模式的实现,而在于系统中任何识别单例都会保证单例的原创 2016-04-12 22:16:54 · 290 阅读 · 0 评论 -
策略模式
就是定义一系列的算法,把他们一个个封装起来,并且使他们可相互替换,Strategy模式算法可独立于使用它的客户端变化涉及角色抽象策略角色:通常用一个抽象类或者接口来实现,主要是定义这个算法所完成的功能具体策略角色:包装相关算法和行为环境角色:持有策略类的引用优点1> 提供管理相关算法族的办法2> 提供可替代继承关系的办法3> 避免使用多重条件判断语句原创 2016-04-19 23:35:48 · 337 阅读 · 0 评论 -
状态模式
允许一个对象在其内部状态改变时改变它的行为,这个对象看起来似乎修改它的类,能够让程序根据不同的外部状况做出不同的响应,最直接的方法就是在程序中将这些可能发生的外部情况全部考虑到,使用 if else 语句来进行代码响应选择,但是这种方法对于复杂一点的状态判断,就会显得杂乱无章,容易产生错误。而且增加一个新的状态将会带来大量的修改,此时,能够修改自身的状态模式的引入也是个不错的主意组成角原创 2016-04-19 23:15:38 · 372 阅读 · 0 评论 -
模板方法模式
模板方法模式把具体实现的步骤封装成抽象方法,提供一些按正确顺序调用它们的具体方法,这样构成一个抽象基类。子类通过继承这个抽象基类去实现各个步骤的抽象方法,而工作流程却由父类来控制实现模板模式是众多模式之中用得比较多的模式,其是先写定义,后实现,然后再调用,将实现与调用分开,从而利用增强了程序的延展性。模板模式是利用虚函数的多态性,可以实现,也可以不实现模板方法模原创 2016-04-18 23:09:53 · 329 阅读 · 0 评论 -
操作型模式
State 模式将所有与一个特定状态相关的行为都放入一个 State的子类对象中,在对象状态切换时,切换相应的对象;但同时维持State的接口,这样实现具体操作与状态之间的解耦。为不同的状态引入不同的对象使得状态转换变得更加明确,而且可以保证不会出现状态不一致的情况,因为转换是原子性,要么彻底转换过来,要么不转换。如果State对象没有实例变量,那么各个上下文可以共享同一个State对象,从而节省原创 2016-04-17 23:06:02 · 405 阅读 · 0 评论 -
备忘录模式
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态使用备忘录模式的原因想要恢复对象某时的原有状态备忘录模式组成部分1> 备忘录角色:备忘录角色存储“备忘发起角色”的内部状态2> 备忘发起角色:创建一个备忘录,用以记录当前时刻它的内部状态3> 备忘录管理者角色:负责保存好备忘录使用原创 2016-04-17 22:43:25 · 304 阅读 · 0 评论 -
原型模式
原型模式是允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象引入原型模式的本质在于利用已有的原型对象,快速生成和原型对象一样的实例优点:1> Prototype模原创 2016-04-17 22:26:21 · 410 阅读 · 0 评论 -
抽象工厂模式
涉及到的角色抽象工厂角色:担任这个角色的是工厂方法模式的核心,它是与应用系统的商业逻辑无关,通常使用接口或抽象类实现具体工厂角色:这个角色直接在客户端的调用下创建产品的实例,这个角色含有选择合适的产品对象逻辑,而这个逻辑是与应用系统的商业逻辑紧密相关抽象产品角色:担任这个角色的类是抽象工厂方法模式所创建的对象的父类,或它们共同拥有的接口,通常使用接口或抽象类实现这一角色抽象原创 2016-04-17 19:19:54 · 342 阅读 · 0 评论 -
生成器模式
1> 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式2> 当构造过程必须允许被构造器的对象有不同的表示时使用生成器模式的目的可以将构建复杂对象的过程和它的部件解耦,因为一个复杂的对象,不但有很大量组成部分,Builder模式就是将这部件和组装过程分开。在Android 中 Dialog 就使用这种方法生成器模式的应用在Java实际使用中,经常会原创 2016-04-15 23:45:01 · 395 阅读 · 0 评论 -
构造型模式
Java的构造器并不是函数,所以不能被继承,构造器的修饰符比较有限,只有 public private protected,其它任何修饰符都不能对其使用,就是说构造器不能被命名为抽象、同步、静态等等访问限制以外的形式注:构造器不是函数,因此没有返回值,也不允许有返回值,但是构造器允许存在return语句中,但是return什么都不返回,如果指定返回值,虽然编译器不会报出任何错误,但是JVM会认原创 2016-04-15 23:28:52 · 1166 阅读 · 0 评论 -
享元模式
享元模式的意图是运用共享技术有效地支持大量细粒度的对象。也就是说在一个系统中如果有多个相同的对象,那么只共享一份就可以,不必每个都去实例化一个对象。在 Flyweight 模式中,由于要产生各种各样的对象,所以在Flyweight 模式中常出现 Factory模式。Flyweight的内部状态是用来共享的,Flyweight factory负责维护一个对象存储池来存放内部状态的对象。Flyweig原创 2016-04-14 23:38:43 · 420 阅读 · 0 评论 -
中介者模式
用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显示地互相引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。简单点来说,将原来两个直接引用或者以来的对象拆开,在中间加入一个“中介”对象,使得两头的对象分别和“中介”对象引用或者依赖组成角色1> 抽象终结者角色:抽象中介者角色定义统一的接口用于各同事角色之间的通信2> 具体中介者角色:具体中介者角色通过协调各同时原创 2016-04-13 23:47:19 · 336 阅读 · 0 评论 -
责任型模式
责任链可能是一条直线、一个环链甚至一个树结构的一部分涉及到角色1> 抽象处理者角色:定义出一个处理请求的接口,假如需要,接口可以定义出一个方法,以返回对下家的引用2> 具体处理者角色、处理接到请求后,可以选择将请求处理掉,或者将请求传给下家3> 责任链模式的静态类结构纯的与不纯的责任链模式纯的责任链模式:一个具体的处理原创 2016-04-10 18:33:30 · 617 阅读 · 0 评论 -
Bridge(桥接)模式
Bridge模式 是 将分离部分与它的实现部分分离,使它们都可以独立的本地化特点:1> 分离接口及其实现部分,这里实现 Abstraction 和 Implements 的分离,有助于降低对实现部分的依赖,从而产生更好的结构化系统 2> 提高可充性,可以独立的对 Abstraction 和 Implements 层次结构进行扩充意图:将一组实现部分从原创 2016-04-10 18:30:34 · 474 阅读 · 0 评论 -
组合模式
组合模式将对象以树形型结构组织起来,以达到“部分 - 整体”的层次结构,使得客户对单个对象和组合对象的使用具有一致性。组合模式屏蔽容器对象与单个对象在使用时的差异,为客户端提供统一的操作接口,从而降低客户代码预备调用对象的耦合关系,方便系统的维护与扩展定义一个公用的接口,让组合对象和单个对象都去实现该接口。因此,如果面对单个对象,则调用单个对象的方法;如果面对组合对象,递归遍历之,依次原创 2016-04-10 18:29:00 · 363 阅读 · 0 评论 -
Facade(外观)模式
子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更容易使用,就是说 需要有一条比现有的与一个系统交互的途径更简单的途径或是需要用一种特殊的方式使用这个系统。通过这个界面,其他系统可以方便地调用子系统的功能,而忽略子系统内部发生的变化:适用场合:1> 为一个比较复杂的子系统提供一个简单的接口原创 2016-04-10 18:27:30 · 582 阅读 · 0 评论 -
Adapter(适配器)模式
Adapter 模式是一个常用的模式,它可以与其他很多模式共同使用Adapter模式的意图是 将一个类的接口转换成希望的另外一种接口,Adapter模式使原本由接口不兼容而不能一起工作的那一些类可以起工作,就是说 需要一种方法,为一个内容合适但接口不配的对象创建一个新的接口,这样把一个类的接口转换成客户端所期待的另一个接口,从而使原接口不匹配而无法在一起工作的两个类能在一起工作原创 2016-04-10 18:23:27 · 695 阅读 · 0 评论 -
观察者模式
观察者模式又叫发布订阅模式。定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖它的对象都得到通知并被自动更新。当两个对象之间松耦合,他们依然可以交互,但是不太清楚彼此的细节,观察者模式提供一种对象设计,让主题和观察者之间松耦合1> 关于观察者的一切,主题只知道观察者实现了某一接口,不需要知道观察者的具体类是谁2> 任何时候都可以增加新的观察者,因为主题唯一依赖的原创 2016-04-12 23:15:23 · 381 阅读 · 0 评论 -
Object-C 单例模式
标准模版代码:// Singleton.h文件#import @interface Singleton : NSObject+ (Singleton*)sharedManager;@property (nonatomic, strong) NSString* singletonData;@end// Singleton.m#import "Singleton原创 2016-08-17 11:36:26 · 359 阅读 · 0 评论