设计模式:面向对象的设计原则下(ISP、DIP、KISS、YAGNI、DRY、LOD)

本文继续来介绍接口隔离原则(ISP)和依赖倒置原则(DIP),这两个原则都和接口和继承有关。文章最后会简单介绍几个除了 SOLID 原则之外的原则。

发布于 技术

设计模式:面向对象的设计原则上(SRP、OCP、LSP)

在面向对象的世界里,可以分为:面向对象的基础知识、面向对象的设计原则和设计模式,如果用武侠小说来做比喻,基础知识就是需要练习的基本功、设计原则就是内功心法、设计模式则是各种各样的具体招式,所以说熟练掌握了设计原则,就能以不变应万变。

发布于 技术

设计模式:面向对象的基础知识

主流的编程范式有三种:面向过程、面向对象和函数式编程,我们现在使用的主流编程语言 C# 或 Java,都是面向对象语言,所以常常说的设计模式也是在面向对象语言这个前提之下。 面向对象的基础知识和一些设计原则,我认为是学习设计模式的基础,本文就聊下这些基础知识。

发布于 技术

现在还需要学习设计模式吗?

最近面试了不少人,Java 和 dotNET 的都有,当问到设计模式时,大部分都只能说出单例和工厂,有些能聊聊其他的一些模式的,大多也没有在实际项目中用过。为了团队成员能有更好的编码能力,便有了重新写写设计模式的想法,写作也是一个重新学习的过程。

发布于 技术

设计模式笔记(25)—总结

断断续续经历了几个月的时间将WebCast的设计模式讲座重新完整听了一遍,并做了笔记,才有了这个设计模式笔记系列,本系列的文章大部分只是给出了基本代码的实现,而并没有去衍生其他的一些例子,笔者认为通过基本的代码实现就能够了解到模式的应用场景,弄出些花哨的例子反倒会让人眼花缭乱,可能并达不到预期的效果,毕竟在实际的应用中我们不是去套用模式。本文作为该系列的最后一篇,将对设计模式做个总结。 首先...

发布于 技术

设计模式笔记(24)—访问者模式(行为型)

Gof定义表示一个作用于某对象结构中的各元素的操作。它可以在不改变各元素的类的前提下定义作用于这些元素的新的操作。 动机在软件构建过程中,由于需求的改变,某些类层次结构中常常需要增加新的行为(方法),如果直接在基类中做这样的更改,将会给子类带来很繁重的变更负担,甚至破坏原有设计。如何在不更改类层次结构的前提下,在运行时根据需要透明地为类层次结构上的各个类动态添加新的操作,从而避免上述问题?请...

发布于 技术

设计模式笔记(23)—策略者模式(行为型)

Gof定义定义一系列算法,把它们一个个封装起来,并且使它们可互相替换。该模式使得算法可独立于使用它的客 户而变化。 动机在软件构建过程中,某些对象使用的算法可能多种多样,经常改变,如果将这些算法都编码到对象中,将会使对象变得异常复杂;而且有时候支持不使用的算法也是一个性能负担。如何在运行时根据需要透明地更改对象的算法?将算法与对象本身解耦,从而避免上述问题?看下面的策略者模式的结构图和基本代...

发布于 技术

设计模式笔记(22)—状态模式(行为型)

Gof定义允许一个对象在其内部状态改变时改变它的行为。从而使对象看起来似乎修改了其行为。 动机在软件构建过程中,某些对象的状态如果改变,其行为也会随之而发生变化,比如文档处于只读状态,其支持的行为和读写状态支持的行为就可能完全不同。如何在运行时根据对象的状态来透明地更改对象的行为?而不会为对象操作和状态转化之间引入紧耦合?看下面状态模式的结构图和代码。 状态模式结构图: 日常生活中我们常见...

发布于 技术

设计模式笔记(20)—职责链模式(行为型)

Gof定义使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。 动机在软件构建过程中,一个请求可能被多个对象处理,但是每个请求在运行时只能有一个接受者,如果显式指定,将必不可少地带来请求发送者与接受者的紧耦合。如何使请求的发送者不需要指定具体的接受者?让请求的接受者自己在运行时决定来处理请求,从而使两者...

发布于 技术

设计模式笔记(21)—备忘录模式(行为型)

Gof定义在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。 动机在软件构建过程中,某些对象的状态在转换过程中,可能由于某种需要,要求程序能够回溯到对象之前处于某个点时的状态。如果使用一些公有接口来让其他对象得到对象的状态,便会暴露对象的细节实现。如何实现对象状态的良好保存与恢复?但同时又不会因此而破坏对象本身的封装性,看...

发布于 技术