# 设计模式
面向对象的七大原则和23种设计模式
# 一、七大原则
7种设计原则,它们分别为开闭原则、里氏替换原则、依赖倒置原则、单一职责原则、接口隔离原则、迪米特法则和合成复用原则,实际上,这些原则的目的只有一个:降低对象之间的耦合,增加程序的可复用性、可扩展性和可维护性。
- 开闭原则
开闭原则(Open Closed Principle,OCP)当应用的需求改变时,在不修改软件实体的源代码或者二进制代码的前提下,可以扩展模块的功能,使其满足新的需求。对扩展开放,对修改关闭 => 降低维护带来的新风险
- 里氏替换原则
里氏替换原则(Liskov Substitution Principle,LSP)子类可以扩展父类的功能,但不能改变父类原有的功能。也就是说:子类继承父类时,除添加新的方法完成新增功能外,尽量不要重写父类的方法。不要破坏继承体系 => 更利于代码结构的升级扩展
- 依赖倒置原则
依赖倒置原则(Dependence Inversion Principle,DIP)高层模块不应该依赖低层模块,两者都应该依赖其抽象,实现开闭原则的重要途径之一。依赖倒置原则的目的是通过要面向接口的编程来降低类间的耦合性
- 单一职责原则
单一职责原则(Single Responsibility Principle,SRP)规定一个类应该有且仅有一个引起它变化的原因 一个类只干一件事,实现类要单一 => 提高代码的可读性
- 接口隔离原则
接口隔离原则(Interface Segregation Principle,ISP)要求程序员尽量将臃肿庞大的接口拆分成更小的和更具体的接口,让接口中只包含客户感兴趣的方法 一个接口只干一件事,接口要精简单一 => 功能解耦,高聚合、低耦合
- 狄米特法则
迪米特法则(Law of Demeter,LoD)又叫作最少知识原则(Least Knowledge Principle,LKP)如果两个软件实体无须直接通信,那么就不应当发生直接的相互调用,可以通过第三方转发该调用。其目的是降低类之间的耦合度,提高模块的相对独立性 不该知道的不要知道,一个类应该保持对其它对象最少的了解,降低耦合度 => 只和朋友交流,不和陌生人说话,减少代码臃肿
- 合成复用原则
合成复用原则(Composite Reuse Principle,CRP)又叫组合/聚合复用原则(Composition/Aggregate Reuse Principle,CARP)它要求在软件复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现。尽量使用组合或者聚合关系实现代码复用,少使用继承
# 二、23种设计模式
设计模式:23种,是面向对象设计原则的实际运用,是对类的封装性、继承性和多态性,以及类的关联关系和组合关系的充分理解。
# 1.创建型 (5)
描述“怎样创建对象” “将对象的创建与使用分离”
# 2.结构型 (7)
如何将类或对象按某种布局组成更大的结构
# 3.行为型 (11)
描述类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务
← Java8-Lambda Java多线程 →