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