设计模式按照"四人帮"的分类一共分为三种。
创建型模式
东西(类)是怎么创建出来的。
Abstract Factory
Bulider
Factory Method
Prototype
Singleton
结构型模式
主要是类与类之间的结构。
Adapter
Bridge
Composite
Decorator
Facade
Flyweight
Proxy
行为型模式
主要是类的动作。
Chain of Responsibility
Command
Interpreter
Iterator
Mediator
Memento
Observer
State
Strategy
Template Method
Visitor
对于上面这些设计模式,你应该可以做到知道这些设计模式典型的使用场景,以及整个模型的类图。
面向对象的六大原则
指导思想
可维护性Maintainability
修改功能,需要改动的地方越少,可维护性越好。
可复用性Reusability
代码可以被以后重复使用
写出自己总结的类库
可扩展性Extensibility/Scalability
添加功能时无需修改原先的代码
灵活性flexibility/mobility/adaptability
代码的接口可以灵活调用
①单一职责原则
Single Responsibility Principle
一个类别太大,功能不要太多,负责单一的职责
比如,一个person类就包括人的属性就可以了,不要涉及到他的管理。
高内聚,低耦合
②开闭原则
Open-Closed Principle
对扩展开放,对修改关闭
尽量不修改原来代码的情况下进行扩展
抽象化,多态是开闭原则的关键
需要替换添加新功能时,扩展子类并且加入原代码中就可以了
③里氏替换原则
Liscoy Substitution Principle
所有使用父类的地方,必须能够透明的使用子类对象。子类可以完全替代父类。
新建一个对象时,可以new这个对象的类,也可以new这个对象的子类。子类从父类继承,重载父类的接口,改变原来接口的语意,这时候就不符合里氏替换原则了。
④依赖倒置原则
Dependency Inversion Priciple
依赖倒置原则:
依赖抽象,而不是依赖具体
面向抽象编程
⑤接口隔离原则
Interface Segregation Principle
每一个接口应该承担独立的角色,不干不该自己干的事情
Flyable Runnable不该合二为一。如果他俩合二为一,当一个子类只想实现Runnable时,他还必须去实现Flyable接口,使用十分不方便。spring设计模式参考http://www.wityx.com/post/240_1_1.html
避免子类实现不需要实现的方法
需要对客户提供接口的时候,只需要暴露最小的接口。不要暴露他不要的接口,不然对客户造成干扰会很麻烦。
⑥ 迪米特法则
Law of Demeter
尽量不要和陌生人说话
在迪米特法则中,对于 一个对象,非陌生人包括以下几类:
当前对象本身(this)
以参数形式传入到当前对象方法中的对象
当前对象的成员对象
如果当前对象的成员对象是一个集合,那么集合中的元素也都是朋友
当前对象所创建的对象
和其他类的耦合度变低