读书笔记----软件设计原则、设计模式
这个作业属于哪个课程 | 班级链接 |
---|---|
这个作业要求在哪里 | 作业要求链接 |
这个作业的目标 | 学习软件的设计原则和设计模式并加以运用 |
参考书籍
《设计模式 - 可复用面向对象软件的基础》
设计原则
分类
-
开闭原则:
- 软件实体应该对扩展开放,对修改关闭。
- 开闭原则是设计原则的核心原则,其他的设计原则都是开闭原则表现和补充。实现开闭原则的方法就是抽象。
-
单一职责原则:
- 一个类应该只承担一种责任。
-
里氏替换原则:
- 所有引用基类的地方必须能透明地使用其子类的对象。
-
依赖倒置原则:
- 面向抽象编程,不要面向具体编程。
-
接口隔离原则:
- 使用专门的接口,而不是大而全统一的接口,不要强迫客户端程序依赖不需要的方法。
-
聚合/组合复用原则:
- 如果可以,应该使用组合而不是继承来达到代码复用的目的。
-
迪米特法则:
- 软件实体之间应该做到最少的交互。不要和陌生人说话。
要求:
-
面向抽象(抽象类、接口)编程,而不是面向实现编程。
-
接口和类的功能要尽可能的单一,避免大而全的类和接口。
-
优先使用组合,而不是继承。
-
子类的所有方法必须在父类中声明,或子类必须实现父类中声明的所有方法。
-
子类应该尽可能的与父类保持一致,不要重写父类原有逻辑。
-
如果类之间没必要直接交互,可以通过“中介”,而不是直接交互,降低耦合性。
-
实现和细节可以通过DI的方式,最大程度减少“硬编码”。
-
如果没有什么明显弊端,类应该被设计成不变的。
-
降低其他类对自身的访问权限,不要暴露内部属性成员,如果需要提供相应的访问器(属性)。
设计模式
分类
-
创建型模式是用来创建对象的模式,抽象了实例的创建过程,封装了创建逻辑。
- 将系统所使用的具体类的信息封装起来。
- 隐藏了类的实例是如何被创建和组织的。
-
结构型模式讨论的是类和对象的结构,继承和组合结构。
- 采用继承机制来组合接口或实现(类结构型模式),或者通过组合一些对象实现新的功能(对象结构型模式)。
- 结构中的各个不同角色组织在一起以提供更强大的、逻辑清晰的功能。
- 结构性模式的类层次结构的组织上有很大的相似性,但是逻辑的侧重功能点是不同的。
-
行为型设计模式关注的是对象的行为,用来解决对象之间的联系/通信问题。
- 也就是对象之间针对于不同的问题场景,如何进行合理交互。
细化
-
创建型
-
工厂模式(Factory Pattern)
-
抽象工厂模式(Abstract Factory Pattern)
-
单例模式(Singleton Pattern)
-
建造者模式(Builder Pattern)
-
原型模式(Prototype Pattern)
-
-
结构型
-
适配器模式(Adapter Pattern)
-
桥接模式(Bridge Pattern)
-
组合模式(Composite Pattern)
-
装饰器模式(Decorator Pattern)
-
外观模式(Facade Pattern)
-
享元模式(Flyweight Pattern)
-
代理模式(Proxy Pattern)
-
-
行为型
-
责任链模式(Chain of Responsibility Pattern)
-
命令模式(Command Pattern)
-
解释器模式(Interpreter Pattern)
-
迭代器模式(Iterator Pattern)
-
中介者模式(Mediator Pattern)
-
备忘录模式(Memento Pattern)
-
观察者模式(Observer Pattern)
-
状态模式(State Pattern)
-
策略模式(Strategy Pattern)
-
模板模式(Template Pattern)
-
访问者模式(Visitor Pattern)
-
心得体会
设计模式的根本是设计原则,而设计原则又是为了达到实现一个“优秀”软件的行为准则。
在你还不能灵活的运用设计原则时,设计模式则是你的垫脚石,让你在具体的问题面前能够写出更好地代码。