设计模式
Yu______________
这个作者很懒,什么都没留下…
展开
-
设计模式六大原则 - (2):里氏替换原则
肯定有不少人跟我刚看到这项原则的时候一样,对这个原则的名字充满疑惑。其实原因就是这项原则最早是在1988年,由麻省理工学院的一位姓里的女士(Barbara Liskov)提出来的。 定义1:如果对每一个类型为 T1的对象 o1,都有类型为 T2 的对象o2,使得以 T1定义的所有程序 P 在所有的对象 o1 都代换成 o2 时,程序 P 的行为没有发生变化,那么类型 T2 是类型 T1 的子转载 2016-11-01 11:04:59 · 222 阅读 · 0 评论 -
设计模式六大原则 - (3):依赖倒置原则
定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。 问题由来:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成。这种场景下,类A一般是高层模块,负责复杂的业务逻辑;类B和类C是低层模块,负责基本的原子操作;假如修改类A,会给程序带来不必要的风险。 解决方案:将类A修改为依赖接口I,类B和类C各自实现接口I,类A通过接转载 2016-11-01 11:05:41 · 208 阅读 · 0 评论 -
设计模式六大原则 - (4):接口隔离原则
定义:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。 问题由来:类A通过接口I依赖类B,类C通过接口I依赖类D,如果接口I对于类A和类B来说不是最小接口,则类B和类D必须去实现他们不需要的方法。 解决方案:将臃肿的接口I拆分为独立的几个接口,类A和类C分别与他们需要的接口建立依赖关系。也就是采用接口隔离原则。 举例来说明接口隔离原则:转载 2016-11-01 11:06:46 · 238 阅读 · 0 评论 -
设计模式六大原则 - (5):迪米特法则
定义:一个对象应该对其他对象保持最少的了解。 问题由来:类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大。 解决方案:尽量降低类与类之间的耦合。 自从我们接触编程开始,就知道了软件编程的总的原则:低耦合,高内聚。无论是面向过程编程还是面向对象编程,只有使各个模块之间的耦合尽量的低,才能提高代码的复用率。低耦合的优点不言而喻,但是怎么转载 2016-11-01 11:07:46 · 289 阅读 · 0 评论 -
设计模式六大原则 - (6):开闭原则
定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。 问题由来:在软件的生命周期内,因为变化、升级和维护等原因需要对软件原有代码进行修改时,可能会给旧代码中引入错误,也可能会使我们不得不对整个功能进行重构,并且需要原有代码经过重新测试。 解决方案:当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。 开闭原则是面转载 2016-11-08 14:36:25 · 313 阅读 · 0 评论 -
《设计模式》 - 7. 组合模式( Composite )
组合模式 ( Composite ) : 说明 :以一个游戏角色为例 , 人物角色的技能表为 主菜单 (skillMenu) , 主菜单 包含 冰系技能菜单 ( iceSkillMenu ) 和 火系技能菜单 ( fireSkillMenu ) , 菜单里面分别还有对应属性技能 . 适用情况 :像上面举例的这种情况 , 技能表 和 属性技能 , 还有单个技能之间层次关系分明 , 就可以使用组合模式原创 2016-12-14 15:32:08 · 2183 阅读 · 0 评论 -
《设计模式》 - 6. 桥接模式( Bridge )
tips : ctor 是cocos2d - JS 中构造函数 . 桥接模式 ( Bridge ) :说明 : 以画笔为例 , 假设画笔有3种型号 (大 、中 、小) 和 3种颜色 (黑 、白 、红) . 正常情况下 每个型号和每种颜色组合(小黑 、中黑 、大黑 、 小白 、中白…)都需要一支 , 那就需要 3*3 = 9 支笔 . 当需求变化时 , 型号和颜色越来越多 , 新增笔的种类也是原创 2016-12-14 11:54:52 · 530 阅读 · 0 评论 -
《设计模式》 - 5. 适配器模式( Adapter )
适配器模式 (Adapter) : 以一个游戏主角为例 , 刚开始主角只有普通攻击和一个技能 - 重击 . //主角 var Character = cc.Class.extend({ Attack : function(){ console.log("普通攻击"); }, Skill : function(){ console.log("重击原创 2016-12-13 15:18:37 · 2035 阅读 · 0 评论 -
《设计模式 》 - 4. 原型模式( Prototype )
原型模式 ( Prototype ) : JavaScript 克隆方法 : function clone(obj) { if (null == obj || "object" != typeof obj) { return obj; } // Date if (obj instanceof Date) { var cop原创 2016-12-09 11:44:10 · 484 阅读 · 0 评论 -
《设计模式》 - 3. 创建者模式( Builder )
Tips : 以KFC的套餐为例 ,每种套餐包含(主食 、副食 、饮料)三种食物 , 假设不同的厨师(Cook)会制作不同的套餐(Meal) , 根据套餐选择不同的厨师 .语言 : JavaScript创建者模式 ( Builder ) :导演类( Dirctor ) :导演类规定套餐的基本组成 , 分为主食 、副食 、饮料3个部分 . var Dirctor = cc.Class.extend({原创 2016-12-05 15:07:08 · 3289 阅读 · 0 评论 -
《设计模式》 - 1. 单例模式( Singleton )
Javascript设计模式 - 原文链接单例模式 : 定义 : 一个类有一个唯一实例, 只能被实例化一次, 可以多个地方调用获取 (JS本身是”无类”语言)在点击按钮需要弹出一个遮罩层的时, 例如 web.qq.com点击登录的时候. 第一次处理 : 创建 div : var createMask = function(){ return document,body.appendChild(原创 2016-11-16 18:24:39 · 1553 阅读 · 0 评论 -
《设计模式》 - 2. 工厂模式( Factory )
Tips : 以下是看完很多作者写得设计模式后的一些个人理解 . 暂以一个生产汽车的工厂为例 , 来阐述工厂设计模式. 简单工厂模式 (Simple Factory) :产品类 :现在有两种车型, 他们都继承Car基类, 两种车具有基类的所有属性和方法.var Car = cc.Class.extend({ ctor: function(){ }, })var A_Car = Car.原创 2016-11-30 10:02:59 · 3025 阅读 · 0 评论 -
MVC 模式
MVC 模式 :语言 : C#说明 :MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发。 Model(模型) - 模型代表一个存取数据的对象或 JAVA POJO。它也可以带有逻辑,在数据变化时更新控制器。 View(视图) - 视图代表模型包含的数据的可视化。 Controller(控制器) - 控制器作用于模型和视图上。它控原创 2016-09-08 10:18:52 · 529 阅读 · 0 评论 -
设计模式六大原则 - (1):单一职责原则
定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。 问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。 解决方案:遵循单一职责原则。分别建立两个类T1、T2,使T1完成职责P1功能,T2完成职责P2功能。这样,当修改类T1时,不会使职责P2发生故障风险;同理,当修改T转载 2016-11-01 11:03:38 · 272 阅读 · 0 评论 -
设计模式 - 创建类模式总结篇
创建类模式主要关注对象的创建过程,将对象的创建过程进行封装,使客户端可以直接得到对象,而不用去关心如何创建对象。创建类模式有5种,分别是: 单例模式:用于得到内存中的唯一对象。工厂方法模式:用于创建复杂对象。抽象工厂模式:用于创建一组相关或相互依赖的复杂对象。建造者模式:用于创建模块化的更加复杂的对象。原型模式:用于得到一个对象的拷贝。 为什么需要创建性模式 首先转载 2016-11-01 10:41:37 · 182 阅读 · 0 评论 -
《设计模式》 - 8. 外观模式( Facade )
《设计模式》 - 8. 外观模式( Facade ) :语言 : C#说明 :外观模式通常将 , 较复杂代码封装 , 方便子系统调用 , 不容易出错 , 可以减少系统间的相互依赖 . 图示 :实现 :对图示中的内容稍微简化了一些 , 大致思路是一样的 . namespace DesignPattern { public interface Shape { void d原创 2017-03-10 16:55:13 · 1501 阅读 · 0 评论