大
大话设计模式这本书给我最大的感觉就是这本书不是为了说明设计模式而写的,它是为了让你能够更好地看懂,更好地理解而存在。到现在读了也有一半了,稍微总结一下。
0.uml类图。
软件工程的基础就是uml类图。依赖:元素A的变化会影响元素B,但反之不成立,那么B和A的关系是依赖关系,B依赖A;用带箭头的虚线表示,箭头指向被依赖元素。泛化:通常所说的继承(特殊个体 is kind of 一般个体)关系,不必多解释了。uml中用带空心箭头的实线线表示,箭头指向一般个体。实现:这个关系最常用于接口。uml中用空心箭头和虚线表示Realize关系,箭头指向定义约定的元素。关联:元素间的结构化关系,是一种弱关系,被关联的元素间通常可以被独立的考虑。uml中用实线表示,箭头指向被依赖元素。聚合:关联关系的一种特例,表示部分和整体(整体 has a 部分)的关系。uml中用带空心菱形头的实线表示Aggregation关系,菱形头指向整体。组合:组合是聚合关系的变种,表示元素间更强的组合关系。如果是组合关系,如果整体被破坏则个体一定会被破坏,而聚合的个体则可能是被多个整体所共享的,不一定会随着某个整体的破坏而被破坏。uml中用带实心菱形头的实线表示Composition关系,菱形头指向整体。
1.简单工厂模式:通过factory进行实例化,一般工厂内用switch进行分支。
2.策略模式:例子:具体算法继承抽象算法。
3.单一职责原则(略)、开放封闭原则(略):顾名思义。依赖倒转原则:高层模块不依赖于底层模块,两个都依赖于抽象。抽象不依赖于细节,细节依赖于抽象。
4.装饰模式:动态的给一个对象添加额外的功能,最大的特征:链式调用(穿衣服)
5.代理模式:为其他对象提供一个代理以控制对对象的访问。
6.工厂方法:把简单工厂的switch case搬运到了客户端代码来实现。
7.原型模式:复印简历的一种clone模式,注意其中的深复制与浅复制。
8.模板方法模式:实例:考试做选择题,将一些抽象操作放到子类实现(answer1()),以实现对代码的最大复用。
9.迪米特法则:如果两个类不必彼此通信,那么这两个类就不应该发生直接作用。(分配修电脑的人)
10.外观模式:设计一个外观类,知道哪些子系统类负责处理请求,将客户的请求代理给适当的子系统对象。
11.建造者模式:设计一个抽象接口,里面有建造需要的所有抽象方法,必须实现所有的,好处就是使建造代码和表示代码分离,使得同样的构建过程可以创建不同的表示。
12.观察者模式:url钓鱼系统中用过,其特点在于notify,出现情况notify所有的已注册类进行处理。
13.抽象工厂模式:可能存在生产多种产品的工厂(sql,access),而且产出来的是实现了不同抽象产品父类的产品。书中还提到了扩展内容:用简单工厂替代、用反射+抽象工厂(把不同实现方式化成字符串,根据需要更换)、用配置文件读入字符串(完全摆脱硬编码)
14.状态模式:为了消除很长的方法(switch语句等),通过不同的状态类进行描述。
15.适配器模式:进行翻译,相当于驱动程序,有点类似于代理模式。
16.备忘录模式:发起人、备忘录、玩家(管理者)的模块化。
17.组合模式:类似于数据结构中多叉树的组织结构。