设计模式概念:一套被反复使用、多数人知晓、经过分类编目的优秀代码设计经验的总结
设计模式要素:模式名称、问题、举例、末态环境、推理、其他有关模式、已知的应用
设计模式分类:创建型、结构型、行为型
创建型模式功能:1
统所使用的具体类的信息封装起来;2
类的实例是如何被创建和组织的
创建型模式作用:1
封装创建逻辑,不仅仅是 new 一个对象那么简单
封装创建逻辑变化,客户代码尽量不修改,或尽量少修改
常见的创建型模式:单例模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式
常见的结构型模式:代理模式、装饰模式、适配器模式、组合模式、桥梁模式、外观模式享元模式
常见行为型模式:模板方法模式、命令模式、责任链模式、策略模式、迭代器模式、中介者模式、观察者模式、备忘录模式、访问者模式、状态模式、解释器模式
单一职责原则:一个类应该只有一个职责
优点:降低类的复杂性;提高类的可读性;提高代码的可维护性和复用性;降低因变更引起的风险
里氏替换原则:优点:代码共享,减少创建类的工作量,每个子类都拥有父类的方法和属性;提高代码的可重用性;提高代码的可扩展性;提高产品或项目的开放性
继承是入侵式的
只要继承,就必须拥有父类所有属性和方法
降低代码的灵活性
子类必须拥有父类的属性和方法,使子类收到限制
增强了耦合性
当父类的常量、变量和方法修改时,必须考虑子类的修改,这种修改可能造成大片的代码需要重构
依赖倒置原则:高层模块不应该依赖低层模块,两者都依赖其抽象;抽象不依赖细节;细节应该依赖于抽象
在 Java 中的表现:模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或抽象类产生的;接口或抽象类不依赖于是实现类;实现类依赖于接口或抽象类
接口隔离原则:1
一个类对另外一个类的依赖性应当是建立在最小的接口上的 2
一个接口代表一个角