- 1 七大设计原则
- 1.1 开闭原则
- 1.2 里氏替换原则
- 1.3 依赖倒置原则
- 1.4 单一职责原则
- 1.5 接口隔离原则
- 1.6 迪米特法则
- 1.7 合成复用原则
- 2 二十三种设计模式
- 2.1 创建型模式(用来`创建对象`)
- 2.2 结构型模式(关注`类和对象的组合`)
- 2.3 行为型模式(关注`对象之间的通信`)
- 参考资料
没错,这是又双叒叕一道面试题。
据我了解,设计模式算是一种编程的经验,是一个比较抽象的概念,没有一定的编程代码量是理解不了的(include me),看不懂是一种正常的现象。
但是面试的时候出现了这种题目该怎么办呢?总不能说不了解吧,所以今天就查了查资料,简单描述下这七大设计原则。
1 七大设计原则 1.1 开闭原则- 当需求改变时,可以在不修改源码的基础上,扩展功能。一般是设计一个抽象的父类,然后用具体的子类继承父类,实现功能。
- 子类继承父类时,除添加新的方法完成新增功能外,尽量不要重写父类的方法。
- 通过面向接口(抽象类)编程,来降低类之间的耦合性。
- 一个类只干一件事,将对象解耦,提高内聚性。
- 跟单一职责原则类似,只是约束的是接口,提高内聚性。
- 如果两个软件实体不需要直接通信,就不应该发生直接的相互调用,可以通过第三方转发调用。
- 类的复用分为继承复用和合成复用。
- 将已有的对象放在新的对象中,新对象就能调用已有对象的功能。
全记下不太现实,只记录一些常见的设计模式也就够了,详细内容可以查看后面的参考资料
2.1 创建型模式(用来创建对象)- 工厂:定义一个用于创建实例的接口,由子类决定不同条件创建不同实例。
- 单例:某个类只能生成一个实例,该类提供了一个全局访问点供外部获取该实例,一般是一个public权限的静态方法获取该类的实例。
- 代理:为某对象提供一种代理以控制对该对象的访问。即客户端通过代理间接访问该对象,从而限制、增强或修改该对象的一些特性
- 装饰:动态的给对象增加一些职责,即增加额外的功能。(有点类似动态代理)
- 模板方法:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。
参考资料
- [1] 一句话总结软件设计七大原则
- [2] GoF 的 23 种设计模式的分类和功能



