设计模式
MOKA
这个作者很懒,什么都没留下…
展开
-
如何成为“10倍效率”开发者
Brad Feld 的一篇文章 The Rise of Developeronomics 中提到了“10倍效率的开发者(10x developer)”的概念(伟大的开发者的效率往往比一般的开发者高很多,而不只是一点点),Adam Loving 在读了之后受到启发,并向多位大牛(Ben Sharpe、Collin Watson 和 Jonathan Locke)询问如何成为“10倍效率的开发者”转载 2016-05-28 15:44:41 · 399 阅读 · 0 评论 -
设计模式之---单件模式
一、模式定义 保证一个类仅有一个实例,并提供一个访问它的全局访问点。 二、所体现出的设计原则 这里重新归纳一下软件设计中的几个原则: 1.OCP法则:开闭法则(Open-Closed Principle)一个软件系统应当对扩展开放,对修改关闭。 描述:通过扩展已有软件系统,可以提供新的行为,以满足对软件的新的需求,使变化中的软件有一定的适应性和灵活性转载 2016-05-22 21:55:22 · 386 阅读 · 0 评论 -
设计模式之---模板方法模式
一、模式定义 模板方法模式在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。 二、所体现出的设计原则 Hollywood原则:别调用(打电话给)我们,我们会调用(打电话给)你。 此原则要求永远只能是高层组件(如2中的AbstractClass的模板方法)调用低转载 2016-05-22 21:54:44 · 331 阅读 · 0 评论 -
设计模式之---调停者模式
调停者(中介者)模式(Mediator)定义一个对象封装一系列多个对象如何相互作用,使得对象间不需要显式地相互引用,从而使其耦合更加松散,并且还让我们可以独立变化多个对象相互作用。结构图如下: 以一个聊天室的例子进行说明,一个聊天室可以很多成员,成员可以加入不同的讨论组,聊天室就是一个中介,讨论组中的成员通过聊天室发送消息。结构图如下: 实现代码: //IChatro转载 2016-05-22 21:53:21 · 589 阅读 · 0 评论 -
设计模式之---适配器模式
一、模式定义 将一个类的接口转换成客户希望的另外一个接口。Adapter 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 二、所体现出的设计原则 我觉得这里体现了2种设计原则:首先是迪米特法则“不合陌生人说话”,类之间的关系尽量少;然后是部分体现了“开闭法则”,增加适配器使得原有系统的接口不必要更改。 三、UML图示转载 2016-05-22 21:52:43 · 305 阅读 · 0 评论 -
设计模式之---策略模式
一、模式定义 定义一个算法家族,包含一组可替换的算法。策略模式使得算法和算法的使用者之间的解耦;并使得使用者可以动态的使用算法家族中的任何一个算法。 二、体现的设计原则 策略模式体现出了一下3个设计原则: 1. 独立出应用中需要变化的部分,和不经常变换的部分想分离。比如算法就属于经常变化的部分,将其独立出来,修改或者扩展时,不会影响到使用者。 2. 针转载 2016-05-22 21:52:07 · 318 阅读 · 0 评论 -
设计模式之---观察者模式
一、模式定义 定义一种对象之间的一对多的依赖关系,这样一来,当一个主题对象改变状态时,它的所有观察者都会收通知并自动更新。 二、 所体现出的设计原则 为交互对象之间的松散耦合设计而努力。 三、UML图示 四、应用场景 1. 当一个抽象模型有两个方面, 其中一个方面依赖于另一方面。将这二转载 2016-05-22 21:51:25 · 361 阅读 · 0 评论 -
设计模式之---装饰者模式
一、模式定义 动态地将责任附加到对象上,如果要扩展功能,装饰者提供比继承更有弹性的替代方案。 二、所体现出的设计原则 开放-关闭原则:类应该对扩展开放,对修改关闭。 三、UML图示 四、应用场景 1. 在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。 2. 处理那些可以撤消的职责。 3. 当不能采用生成子类的方法进行扩充时转载 2016-05-22 21:50:50 · 256 阅读 · 0 评论 -
设计模式之---工厂模式
一、模式定义 1. 简单工厂模式(又称静态工厂模式):并没有派生体系,通常提供一个静态的方法,创建一个具体的产品,并返回一个产品抽象类的指针,简单工厂模式通常不被当成设计模式的一种,而只是一种编程习惯,将产品的创建工作集中一个地方,当产品发生变化时,只需要修改静态工厂的方法即可。也就是将变化的部分独立出来了。 2. 工厂模式:定义一个创建对象的接口,但由子类决定要实例化的类是哪转载 2016-05-22 21:50:07 · 259 阅读 · 0 评论 -
iOS设计模式——单例模式
单例模式用于当一个类只能有一个实例的时候, 通常情况下这个“单例”代表的是某一个物理设备比如打印机,或是某种不可以有多个实例同时存在的虚拟资源或是系统属性比如一个程序的某个引擎或是数据。用单例模式加以控制是非常有必要的。 单例模式需要达到的目的 1. 封装一个共享的资源 2. 提供一个固定的实例创建方法 3. 提供一个标准的实例访问接口 单例模式的创建 本文以创建一个MySinglet转载 2016-06-02 10:05:58 · 523 阅读 · 0 评论 -
iOS设计模式——MVC(Model-View-Controller)
Modol View Controller(MVC)是一种最早的也是最成功的可重用的设计模式,70年代的时候首次在smaltalk编写的程序中成功使用。基于MVC设计模式,Cocoa整体架构可以划分为三个子系统:Model, View, Controller,我们可以相应的理解为:数据模型,视图和控制器。 Modol View和Controller的角色 要想理解MVC设计模式中每转载 2016-06-02 10:03:30 · 1078 阅读 · 0 评论 -
iOS设计模式——Category
什么是Category Category模式用于向已经存在的类添加方法从而达到扩展已有类的目的,在很多情形下Category也是比创建子类更优的选择。新添加的方法同样也会被被扩展的类的所有子类自动继承。当知道已有类中某个方法有BUG,但是这个类是以库的形式存在的,我们无法直接修改源代码的时候,Category也可以用于替代这个已有类中某个方法的实体,从而达到修复BUG的目的。然而却没有什么便捷的转载 2016-06-02 10:02:58 · 332 阅读 · 0 评论 -
UML建模之时序图(Sequence Diagram)
一、时序图简介(Brief introduction) 二、时序图元素(Sequence Diagram Elements) 角色(Actor) 对象(Object) 生命线(Lifeline) 控制焦点(Focus of Control) 消息(Message) 自关联消息(Self-Message) Combined Fragments 三、时序图转载 2016-05-28 16:19:34 · 759 阅读 · 0 评论 -
设计模式---命令模式
一、模式定义 命令模式将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其它对象。命令模式也支持可撤销的操作。此模式允许我们将命令对象随心所欲地存储,传递和调用。 二、所体现出的设计原则 解除请求的发出者和请求执行者之间的耦合 三、UML图示转载 2016-05-22 21:56:05 · 266 阅读 · 0 评论