天天看点

简单说一下什么是设计模式?

什么是设计模式?

设计模式(Design pattern) 是解决软件开发某些特定问题而提出的一些解决方案也可以理解成解决问题的一些思路。通过设计模式可以帮助我们增强代码的可重用性、可扩充性、 可维护性、灵活性好。我们使用设计模式最终的目的是实现代码的 高内聚 和 低耦合。

什么是高内聚和低耦合?

举例一个现实生活中的例子,例如一个公司,一般都是各个部门各司其职,互不干涉。各个部门需要沟通时通过专门的负责人进行对接。在软件里面也是一样的 一个功能模块只是关注一个功能,一个模块最好只实现一个功能。这个是所谓的内聚,模块与模块之间、系统与系统之间的交互,是不可避免的, 但是我们要尽量减少由于交互引起的单个模块无法独立使用或者无法移植的情况发生, 尽可能多的单独提供接口用于对外操作, 这个就是所谓的低耦合

设计模式的6大原则

1、开闭原则(Open Close Principle)

对软件实体的改动,最好用扩展而非修改的方式。如果要修改代码,尽量用继承或组合的方式来扩展类的功能,而不是直接修改类的代码。

2、里氏代换原则(Liskov Substitution Principle)

尽量把父类设计为抽象类或者接口,让子类继承父类或实现父接口,子类可以扩展父类的功能,但不能改变父类原有的功能。

1. 老爸能干的事情,儿子都能干。

2. 但是儿子能干的事情老爸不一定能干。

里氏代换原则是开闭原则的具体实现手段之一。

3、单一职责原则(Single Responsibility Principle)

一个类只承担一个职责,千万不要让一个类干的事情太多。

4、接口隔离原则(Interface Segregation Principle)

接口最小化。接口中的方法应该尽量少。和单一职责原则类似

  • 单一职责针对的是类,
  • 接口隔离针对的是接口

5、依赖倒转原则(Dependence Inversion Principle)

要依赖抽象,不要依赖具体类。这个和针对接口编程, 而不是面向实现编程很像。但是它更强调抽象。这个原则是不能让高层组件依赖底层组件,而且高层组件和低层组件都应该依赖抽象。摘抄自 【Head First 设计模式】

面向接口编程 而不是面向实现编程,

这里的接口不一定就是我们程序中的接口也可以是抽象类。

Animal dog1 = new Dog();//面向接口
  Dog dog2 = new Dog();//面向实现
           

6、迪米特法则,又称最少知道原则(Demeter Principle)

  1. 类向外公开的方法应该尽可能的少,
  2. 依赖的对象尽可能的少(只依赖应该依赖的对象)。

例如一个电脑 有 关闭电脑是要按照下面方式依次执行

1. 保存当前任务

2. 关闭服务

3. 关闭屏幕

4. 关闭电源

当我们执行时候这4个操作不用对操作人都开放 只要有一个关闭电脑的行为方法即可 ,而这个关闭电脑行为包含 保存当前任务,关闭服务,关闭屏幕,关闭电源。如果按照单一职责原则我们可以将电脑拆分为 操作系统 和 硬件设备容器 操作人只需要依赖 硬件设配容器即可,而我们的硬件设备容器依赖操作系统。

参考文献:

https://blog.csdn.net/fangkang7/article/details/82684819

https://blog.csdn.net/eleanoryss/article/details/79555200

https://www.jianshu.com/p/a24468909525

https://www.jianshu.com/p/a24468909525

https://juejin.im/post/5b7e4d31f265da43223c3043

https://juejin.im/post/5b7e4d31f265da43223c3043

https://www.jianshu.com/p/30931aab5ea0

继续阅读