| 企服解答
设计模式是一种抽象的编程思想,并不局限于某一特定的编程语言,而是在许多语言之间相通的。比如在Java、C#、C++语言当中,都可以使用到设计模式。但设计模式也有它的边界,它的适用范围是面向对象的编程语言。对于面向过程语言、函数式编程语言,谈论设计模式是没有意义的。设计模型可以大致分为3种模式:创建型模式、结构型模式、行为型模式。
设计模式是什么
1、创建型模式
这一类设计模式的目的是用于创建对象。比如大家常用的工厂模式、单例模式,就属于创建型模式。
2、结构型模式
这一类设计模式的目的是优化不同类、对象、接口之间的结构关系。比较常用的代理模式、装饰者模式,就属于结构型模式。
3、行为型模式
这一类设计模式的目的是更好地实现类与类之间的交互以及算法的执行。比如策略模式、观察者模式,就属于行为型模式。
| 拓展阅读
10大设计原则包括了:1、单一职责原则 SRP;2、开放-封闭原则 OCP;3、里氏替换原则 LSP;4、接口隔离原则 ISP;5、依赖倒置原则 DIP;6、最少知识原则(迪米特原则)LOD;7、组合/聚合复用原则 CRP;8、不要重复你自己 DRY;9、尽量保持简单 KISS;10、不要过度设计你暂时用不到的逻辑 YAGNI。
1、单一职责原则 SRP
实现类要职责单一:如果一段代码块(函数 类 模块)负责多个功能,那么当 A 功能需求发生改变的时候改动了代码,就有可能导致 B 功能出现问题,所以一段代码块只应该负责一个职责。
2、开放-封闭原则 OCP
要对扩展开放,对修改关闭:通过修改老代码来实现新功能可能导致老模块出现 BUG,所以我们应该通过开发新代码块来实现新功能
3、里氏替换原则 LSP
不要破坏继承体系:程序中的子类应该可以替换父类出现的任何地方并保持预期不变。所以子类尽量不要改变父类方法的预期行为
4、接口隔离原则 ISP
设计接口的时候要精简单一:当类 A 只需要接口 B 中的部分方法时,因为实现接口需要实现其所有的方法,于是就造成了类 A 多出了部分不需要的代码。这时应该将 B 接口拆分,将类A需要和不需要的方法隔离开来
5、依赖倒置原则 DIP
面向接口编程:抽象不应该依赖细节,细节应该依赖于抽象。核心是面向接口编程,我们应该依赖于抽象接口,而不是具体的接口实现类或具体的对象
注意:上面的 SOLID 又称为5大设计原则
6、最少知识原则(迪米特原则)LOD
降低耦合度:一个类或对象应该对其它对象保持最少的了解。只与直接的朋友(耦合)通信。
7、组合/聚合复用原则 CRP
多用组合少用继承:尽可能通过组合已有对象(借用他们的能力)来实现新的功能,而不是使用继承来获取这些能力
8、不要重复你自己 DRY
功能语义重复应该合并,代码执行重复应该删减,代码逻辑重复但语义不同应该保留
9、尽量保持简单 KISS
尽可能使用简单可读性高的代码实现功能,而不用逻辑复杂、实现难度高、可读性差的方式
10、不要过度设计你暂时用不到的逻辑 YAGNI
不要过度优化、不要过度预留扩展点、不要设计同事看不懂的代码。
[免责声明]
文章标题: 设计模式是什么
文章内容为网站编辑整理发布,仅供学习与参考,不代表本网站赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请及时沟通。发送邮件至36dianping@36kr.com,我们会在3个工作日内处理。