高内聚 低耦合
模块内,相似接口应当聚合在一起,
低耦合度,指模块之间应该尽量少的共享信息。
Solid
SRP 单一责任原则:一个类只负责一个事,方便理解,以后出错也好问责。
OCP 开放封闭原则:对扩展开放,对修改封闭,一个模块可以通过增加新的扩展项来进行修改,尽量少动写好的代码。
高内聚低耦合
LIP Liskov替换原则:看第3章
ISP 接口隔离原则:把大接口拆小一点,要不有的类在实现大接口时会有用不到的方法,放着不好看。
DIP 依赖转置原则:多用点儿接口,先用接口连接思路,之后在填充具体类。反着来很别扭,这样最舒服。
面向可维护性的设计模式
creational patterns
Factory Method :通过工厂类创建实例。减少与实例类的联系,OCP
Abstract Factory:通过不同实现抽象工厂的类,通过委派方式生产出好几套不同的搭配,不同的套餐。
Builder :就像组装电脑的配置单,先在builder中利用builder中的方法灵活的生成一个实例,之后直接调用builder的get得到实例。通常各个builder都是实现了某个抽象builder的子类。
structural patterns
Bridge:建立一个永久的委托关系,有点儿像Strategy不过这里的委托是永久的。运行时再建立关系。
proxy 代理模式:
委托方法防止用户直接访问复杂实例,还可以保存实例留待下次使用。
Composite
在类中添加一个集合成员来保存下层实例,实现上下层结构
Observer 模式
偶像存储着Observer列表,一有改变就通知全体Observer,集体通知方式为调用Observer的update()方法,Observer自然也存储着偶像的实例,在update函数中直接获取偶像信息。一个一对多模式。Observer是接口,Observable是抽象类。
visitor 模式:
太像Stratege模式了,不过就是传入strategy进行委托的那种,但不同的是这个visitor可以是多个ADT的策略,也就是他可以是不同类在操作时的策略。visitor内部通过重载多不同参数进行操作,委托的类通过accept(visitor v)接受visitor并把自己委托给visitor。
Mediator:偶像作为媒介,开始线上交友模式,Observer中广播偶像变化,Mediator中就广播粉丝变化,有点儿像聊天软件。
Command:将指令command封装成对象,由一个控制control终端接受。
链式处理:链式处理请求。不满足就到下个handler中请求。
State 模式:
类中委托一个状态类,调用move(char c)函数时委托给state,在state的函数中返回新的状态,这个类再进行状态更新。state通过singleton模式,只有一个作为成员变量的实例,需要时返回这个实例。accept是用于判断这个状态是否可以作为结束状态。
Memento:三个类, Originator要备忘的类,备忘时把状态信息存在一条新的备忘类中,准备一个caretaker类存储一个备忘类列表。
正则表达式,简化后一条不带递归的生成式。