
设计模式
文章平均质量分 61
东阳z
从大数据到深度学习到C++到Java
展开
-
3. 组件协作之Observer——观察者模式
动机 在软件构建过程中,我们需要为某些对象建立一种“通知依赖关系” ——一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知。如果这样的依赖关系过于紧密,将使软件不能很好地抵御变化。 使用面向对象技术,可以将这种依赖关系弱化,并形成一种稳定的依赖关系。从而实现软件体系结构的松耦合。 模式定义 定义对象间的一种一对多(变化)的依赖关系,以便当一个对象(Subject)的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。 代码示例 /* * 违背了依赖倒置原则 * Mai原创 2021-05-18 16:36:10 · 178 阅读 · 0 评论 -
2. 组件协作之Strategy 策略模式
Strategy及其子类为组件提供了一系列可重用的算法,从而可以使得类型在运行时方便地根据需要在各个算法之间进行切换。 含有许多条件判断语句的代码通常都需要Strategy模式。 动机 在软件构建过程中,某些对象使用的算法可能多种多样,经常改变,如果将这些算法都编码到对象中,将会使对象变得异常复杂;而且有时候支持不使用的算法也是一个性能负担。 如何在运行时根据需要透明地更改对象的算法?将算法与对象本身解耦,从而避免上述问题? 模式定义 定义一系列算法,把它们一个个封装起来,并且使它们可互相替换(变化.原创 2021-05-17 10:59:58 · 100 阅读 · 0 评论 -
1. 组件协作之Template Method——模板方法
Template Method模式是一种非常基础性的设计模式,在面向对象系统中有着大量的应用。“不要调用我,让我调用你” 模式定义 定义一个操作中的算法的骨架 (稳定),而将一些步骤延迟(变化)到子类中。Template Method使得子类可以不改变(复用)一个算法的结构即可重定义(override 重写)该算法的某些特定步骤。 GOF-23模式分类 从目的分类 创建型(Creational)模式:将对象的部分创建工作延迟到子类或者其他对象,从而应对需求变化为对象创建时具体类型实现引来的冲击。 ..原创 2021-05-17 10:41:04 · 98 阅读 · 0 评论 -
面向对象设计原则
1. 依赖倒置原则(DIP) 高层模块(稳定)不应该依赖于底层模块(变化),二者都应该依赖于抽象(稳定)。 抽象(稳定)不应该依赖于实现细节(变化),实现细节应该依赖于抽象(稳定)。 2. 开放封闭原则(OCP) 对扩展开放,对更改封闭。 类模块应该是可扩展的,但是不可修改。 3. 单一职责原则(SRP) 一个类应该仅有一个引起它变化的原因。 变化的反向隐含着类的责任 4. Liskov替换原则(LSP) 子类必须能够替换他们的基类(IS-A)。 继承表达类型抽象。 5. 接口隔离原则(IS原创 2021-05-13 22:38:14 · 81 阅读 · 0 评论