一、设计模式7大原则

总览

设计模式的7大原则核心思想就是:

  • 对接口编程,而不是对实现编程
  • 优先使用对象组合,而不是继承
    其实能理解上面的两句话,基本上就可以了,毕竟是概念性的知识,以理解为主,但考虑到面试时会问到其他的内容,下面还是要对7大原则进行一些总结

1、开闭原则

总结:软件实体应当对扩展开放,对修改关闭
解释:扩展新类,而不是修改旧类,举例,比如有一个A接口,实现类为A1,在客户端client中调用A接口的实现类A1,如果现在A1不能满足要求了,不需要修改A1实现类,而是直接新建一个A接口的实现类A2,这就是对A1修改关闭,对A扩展开放

2、里氏替换原则

总结:继承必须确保超类(父类)所拥有的性质在子类中仍然成立
解释:继承父类,而不是改变父类,就是说子类在继承父类的时候不能修改父类中已经实现的方法,可以实现没有实现的抽象方法,也可以添加新方法,这样的话,在使用父类的地方是随时可以替换为子类的,就称为里氏替换原则

3、依赖倒置原则

总结:高层模块不应该依赖底层模块,抽象不应该依赖细节,细节应该依赖抽象
解释:面向接口编程,不是面向实现编程,举例 :接口A有实现类A1,接口B有实现类B1,在接口A中不能依赖B1,只能依赖B,这就是高层不能依赖底层,抽象不能依赖细节,同样如果在B1中需要依赖A1时,不要直接依赖A1,而是直接依赖A,这就是细节依赖抽象或者接口

4、单一职责原则

总结:一个类应该有且只有一个引起它变化的原因,否则这个类应该被拆分
解释:每个类只负责自己的事情,而不是变成万能的,这里最好理解的就是我们在开发中使用的dao,比如UserDao专门操作用户,OrderDao专门操作订单,这就叫单一职责原则

5、接口隔离原则

总结:一个类对另一个类的依赖应该建立在最小接口上
解释:各个类建立自己的专用接口,而不是建立一个万能接口,这个和上面的单一职责原则有点类似,比如UserServiceImpl实现类对应的是UserService接口,OrderServiceImpl实现类对应的是OrderService接口,而不是有一个UserOrderService接口包括了UserServiceImpl和OrderServiceImpl两个实现类的所有方法,这就违反了接口隔离原则

6、迪米特法则

总结:也叫最少知道原则
解释:无需直接交互的两个类,如果需要交互则使用中间类,就是说A类和B类本来没有直接交互,但是现在又存在了交互的情况,那么就建立一个中间类来协调两个类的关系,但是这种方式可能会造成大量的中间类,使用时也要慎重

7、合成复用原则

解释:又叫组合/聚合复用原则,类在复用时优先考虑组合和聚合的关联关系来实现,而不是使用继承来实现,举例A需要调用B中的方法,尽量不要使用A继承B的方式,而是使用A中定义一个B的成员变量或者注入,然后创建一个方法调用B中的指定方法

总结

设计模式的7大原则就这么多,说句实话,没有必要非得背下来,但是你要理解,做到看见这个原则知道核心思想就可以了。

你可能感兴趣的:(一、设计模式7大原则)