设计模式也是比较欠缺的一方面,这次看的是 《设计模式之禅》 ,前面看了一点 《Head First 设计模式》感觉都是图片有点乱。
设计原则
单一职责原则:应该有且仅有一个原因引起类的变更,对于接口设计时要做到单一职责。
里氏替换原则:只要有父类出现的地方,替换为子类也不会产生任何问题或异常。
依赖倒置原则:模块间的依赖关系是通过接口或抽象类产生的(面向接口编程)。
接口隔离原则:客户不应该依赖它不需要的接口;类间的依赖关系应建立在最小的接口上;尽量使用多个专门的接口。
迪米特法则:一个对象应对其他对象有最少的了解;只和直接朋友交流,朋友间也是有距离的;一个方法中尽量不引入类中不存在的对象;减少 public 方法和属性。
开闭原则:对扩展开放,对修改关闭;通过扩展来实现变化;不允许出现接口或抽象方法中不存在的 public 方法。
一、创建型模式
-
工厂模式:
-
简单工厂、抽象产品接口,工厂传参决定创建的实例
-
工厂方法、抽象产品接口,使用不同的工厂创建不同的实例
-
抽象工厂、工厂方法的工厂方法,同一工厂可以创建不同的实例
-
-
建造模式:构造复杂对象
-
原型模式:克隆对象
二、结构型模式
- 适配器模式:根据目标,在适配器中添加相应方法。适配器中传入源对象或者继承源对象,并添加方法
- 外观模式:提供统一接口访问子系统方法
- 装饰者模式:在不改变源类的情况下,建一个包装对象,来扩展原有类功能
- 代理模式:静态代理、动态代理
- 组合模式:View 的树状结构,https://www.wshunli.com/posts/fb6e1df3.html
- 桥接模式:使用抽象类的抽象方法,把抽象和实现分隔开
- 享元模式:尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象
三、行为型模式
-
观察者模式:被观察者支持观察者实例;发生变化时调用观察者方法
-
策略模式:一组类实现同一接口,使用策略类替换具体实现类对象 https://www.jianshu.com/p/d0c1b312d563
-
状态模式:
-
命令模式:将命令的发送和接收分隔开,https://juejin.im/post/5a7fa05ff265da4e777fa3bd
-
迭代器模式:迭代器中持有容器对象,可以遍历容器中的元素,https://juejin.im/post/5d6e120ef265da03c428ac42
-
模板方法模式:父类提供抽象方法的封装,子类负责具体实现,https://www.cnblogs.com/java-my-life/archive/2012/05/14/2495235.html
-
责任链模式:每个处理对象持有下一个处理对象,https://www.runoob.com/design-pattern/chain-of-responsibility-pattern.html
-
备忘录模式:获取对象的状态并将其保存,以便以后恢复,https://juejin.im/post/59c8eb6951882564c5164c5f
-
中介者模式:多个对象间的通信,https://www.runoob.com/design-pattern/mediator-pattern.html
参考资料
1、图说设计模式 — Graphic Design Patterns
https://design-patterns.readthedocs.io/zh_CN/latest/index.html#
2、设计模式Java版
https://quanke.gitbooks.io/design-pattern-java/
评论 (0)