随笔分类 -  设计模式

摘要:动机: 在软件构建过程中,我们需要为某些对象建立一种“通知依赖关系” 一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知。如果这样的依赖关系过于紧密,将使得软件不能很好的抵御变化。 使用面向对象技术,可以将这种依赖关系弱化,并形成一种稳定的依赖关系。从而实现软件体系结构的松 阅读全文
posted @ 2020-06-24 14:40 每天都要吃早饭 阅读(132) 评论(0) 推荐(0)
摘要:模式定义: 定义一系列算法,把他们一个个封装起来,并且使他们可互相替换(变化)。该模式使得算法可独立于使用它的客户程序(稳定)而变化(扩展,子类化)。 动机: 在软件构建过程中,某些对象使用的算法可能多种多样,经常改变,如果将这些算法都编码到对象中,将会使得对象变得异常复杂;而且有时候支持不使用的算 阅读全文
posted @ 2020-06-15 19:02 每天都要吃早饭 阅读(137) 评论(0) 推荐(0)
摘要:动机: 在软件构建过程中,对于某一项任务,它常常有稳定的操作结构,但各个子步骤却有很多改变的需求,或者由于固有的原因(子步骤)无法和任务的整体结构同时实现。 如何在确定稳定操作结构的前提下,来灵活的应对各个子步骤的变化或者晚期实现需求。 要点: Template Method 模式是一种非常基础性的 阅读全文
posted @ 2020-06-15 16:27 每天都要吃早饭 阅读(127) 评论(0) 推荐(0)
摘要:依赖倒置原则(DIP) 高层模块(稳定)不应该依赖于底层模块(变化),二者都应该依赖于抽象(稳定)。 抽象不应该依赖于实现细节(变化),实现细节应该依赖于抽象(稳定)。 开放封闭原则(OCP) 对扩展开放,对更改封闭 类模块应该是可扩展的,但是不可修改。 单一职责原则(SRP) 一个类应该仅有一个引 阅读全文
posted @ 2020-06-09 15:05 每天都要吃早饭 阅读(117) 评论(0) 推荐(0)
摘要:软件设计复杂的根本原因: 客户需求的变化 技术平台的变化 开发团队的变化 市场环境的变化 如何解决复杂性: 分解(面向过程->函数?) 人们面对复杂性有一个常见的作法:即分而治之,将大问题分解为多个小问题,将复杂问题分解为多个简单问题; 抽象 更高层次来讲,人们处理复杂性有个通用的技术,即抽象。由于 阅读全文
posted @ 2020-06-01 16:18 每天都要吃早饭 阅读(136) 评论(0) 推荐(0)