设计模式(3)设计模式的基本原则(上)封装变化的内容、面向接口编程、多用组合
## 设计模式的基本原则(上)
总体来说设计模式是为了让我们的代码更加可读、可扩展、可复用、易于理解和维护。
设计模式的基本原则主要包括以下几点:
1. **封装变化的内容**
封装是面向对象编程的基本特性,它可以将对象的内部状态和行为隐藏起来,只暴露抽象的接口供外部使用。
封装变化的内容指的是将可能变化的内容封装起来。
未来内容变化时只需要修改被封装的部分,无需修改调用这个被封装的接口的代码。
从而将变更造成的影响最小化,提高代码的可扩展性和可维护性。
2. **面向接口编程而不是面向实现编程**
对象和对象之间通过接口进行交互,而不是直接调用对象的具体实现。
调用者不必关心被调用者的具体实现,只需要针对被调用者接口实现自己的逻辑。
这样被调用者可以遵循封装变化的内容原则,随时修改自己的实现,而不会影响调用者的代码。
而且因为接口是抽象的,所以调用者可以更加灵活地使用不同的实现。
例如,通过多态的方式,调用者可以在运行时动态地选择不同的实现。
3. **多用组合,少用继承**
继承是面向对象编程的基本特性,它可以让子类继承父类的属性和方法。
继承有其适用的场景和优点,例如代码的复用、多态性和抽象等方面。
但在设计和使用继承时,需要权衡其优点和缺点,并根据具体情况选择合适的设计原则和模式。
继承的缺点:
- 继承会继承父类的所有属性和方法,包括一些不需要的内容。
- 继承会破坏封装,子类可以访问父类的所有属性和方法。
- 在重写父类方法时,子类必须确保方法的行为是一致的,否则可能会导致意想不到的错误。
- 容易引入复杂性,继承层次过深或者过多,会导致代码难以维护。
组合是一种弱耦合的关系,它可以将多个对象组合成一个更大的对象。
组合的优点是它可以将变化的部分抽象成接口,而不是具体的实现。
通过组合的方式,我们可以更加灵活地替换组合对象的具体实现。
组合和继承都是代码复用的方式,但是继承是一种强耦合的关系,而组合是一种弱耦合的关系。
因此,我们应该尽量使用组合而不是继承,以便让我们的代码更加灵活、可扩展和可复用。
To be continued...