参考的书籍是设计模式的艺术-软件开发人员的内功修炼之道.

原书是 java,我用 c++的例子好了.

设计模式是以面向对象的程序设计为基础,但更多是服务于软件设计的框架,个人觉得也可脱离面向对象,也可以作为一种设计哲学,存在任何形式的软件里.

不要滥用,用的不好的设计模式,还不如不用.

尽量记录要点.

对象的关系,对应 uml 类图

  • 关联,聚合,组合

就是包含关系, has-a

关联,单向关联,双向关联,自关联,多重关联.

多重关联的例子,一个 form 关联多个 button, 但是每个 button 对应一个 form 2018-08-01-14-42-31

聚合其实和关联相似,强调的是成员对象作为整体对象的一部分,也可以脱离整体对象存在 一般就是对象(整体)setter 进来的成员对象.

2018-08-01-14-45-37

组合强调的是整体对象可以控制成员对象的生命周期,即 new 出来的成员对象,注意和 setter 的区别

  • 依赖

某对象的方法里以另外一个对象为参数;

某对象方法里使用了另外对象的局部对象;

某对象调用其他对象的静态方法;

某对象返回一个其他对象;

2018-08-01-14-47-51

  • 泛化(继承)

就是继承关系, is-a

2018-08-01-14-48-40

  • 实现关系

指的某个 interface 和其实现的主体之间的关系,感觉也算是继承关系里.

interface 只有方法,莫有成员变量.

2018-08-01-14-50-40

面向对象的设计原则

2018-08-01-14-35-45

每一个都很重要,细细体会.