设计模式
魔笛手CTO
人生看淡,不服就干
展开
-
设计模式六大原则关系图
多说一句,联系一下数据库范式,是不是熟悉的味道原创 2019-04-19 10:43:18 · 585 阅读 · 0 评论 -
设计模式——策略模式
定义:定义一系列算法,将他们封装起来,并使他们可以相互替换。场景:许多相关的类仅仅是行为有异 需要使用同一个算法的不同变体 算法使用主体不应该知道的数据 一个类定义了多种行为,并且这些行为在这个类的操作中以多个条件语句的形式出现类图: 优点:使得算法可重用 使用组合代替继承,易于拓展 消除了大量的条件语句 同一个算法可以有不同的实现缺点:主体必须了解不...原创 2019-05-04 17:03:54 · 85 阅读 · 0 评论 -
设计模式大纲
设计原则: 《设计模式六大原则关系图》 设计模式: 《策略模式》 《观察者模式》 《装饰者模式》 《工厂方法模式》 《抽象工厂模式》 《单例模式》 《命令模式》 ...原创 2019-05-04 17:08:30 · 70 阅读 · 0 评论 -
设计模式——观察者模式
定义:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变是,所有依赖于它的对象都能得到通知并被自动更新场景:当一个抽象模型有两个方面,其中一个方面依赖于另一个方面 当对一个对象的改变需要同时桶盖其他对象,而不知道具体有多少个待改变对象 当一个对象必须通知其他对象,而它又不能假设其他对象是谁类图:图片来自《设计模式之禅》优点:降低主题和观察者之间的耦合 支持...原创 2019-05-04 17:36:35 · 99 阅读 · 0 评论 -
设计模式——单例模式
意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点场景:当一个类只能有一个实例,并且客户可以从一个众所周知的访问点访问它时类图:图片来自《设计模式之禅》优点:全局变量虽然能够提供全局化的实例访问,但是需要在初始化时就实例化,并且并不能控制实例化新的实例,而单例模式解决了这一问题 单例模式并非严格限制只能有一个实例,可以根据需要方便的控制实例数量缺点:由于某些语言...原创 2019-05-19 18:13:19 · 102 阅读 · 0 评论 -
设计模式——命令模式
意图:将一个请求封装为一个对象,从而可以使用不同的请求对客户进行参数化;支持请求排队、记录请求日志,以及撤销操作场景:调用者不需要知道响应者具体做了什么,而只需要一个统一的接口时 需要用到队列执行、取消操作、日志恢复的时候类图:图片来自《设计模式之禅》优点:Command易于通过继承拓展新功能,并且可以在单个子类中实现复合功能缺点:容易产生子类爆炸...原创 2019-05-19 18:35:26 · 96 阅读 · 0 评论 -
设计模式——工厂方法模式
意图:定义一个用于创建对象的接口,使一个类的实例化延迟到子类场景:当一个类不知道他所必须创建的对象的类的时候 当一个类希望有它的子类来指定它所创建的对象的时候 当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望根据不同的需求确定不同的子类的时候类图:图片来自《设计模式之禅》优点:将抽象与实现隔离,有利于代码解耦,易于拓展缺点:稍不留神就会产生大量的子类...原创 2019-05-09 20:44:24 · 104 阅读 · 0 评论 -
设计模式——抽象工厂模式
意图:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类场景:一个系统要独立于它的产品的创建、组合和表示时 一个系统要有多个产品系列中的一个来配置时 当你要强调一系列祥光的产品对象的设计以便进行联合使用时 当你提供一个产品类库,而只想显示他们的接口而不是实现时类图:图片来自《设计模式之禅》优点:对抽象依赖而不是实现依赖,维护代码一致性,使得代码便于相互替换...原创 2019-05-09 21:20:56 · 137 阅读 · 0 评论 -
设计模式——装饰者模式
意图:动态的给一个对象添加额外的职责。场景:不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责 处理那些可以撤销的职责 当不能采用子类继承的方法扩展时类图:图片来自《设计模式之禅》优点:相比编译时的继承,运行时的装饰者更加灵活 避免在层次高层的类有太多的特征缺点:装饰器会改变原有对象类型,可能出现类型错误 会产生大量的对象,导致理解困难 装饰链条可能会...原创 2019-05-07 22:45:41 · 105 阅读 · 0 评论