5.1 OO 基础
OO 基础回顾
- 抽象(Abstraction)
- 封装(Encapsulation)
- 继承(Inheritance)
- 多态(Polymorphism)
5.2 OO 原则
5.2.1 新原则
最近两章都没有介绍新的 OO 原则。
5.2.2 原则回顾
-
封装变化。
Encapsulate what varies. -
针对接口编程,而不是针对实现编程。
Program to interfaces, not implementations. -
优先使用组合,而不是继承。
Favor composition over inheritance. -
尽量做到交互对象之间的松耦合设计。
Strive for loosely coupled designs between objects that interact. -
类应该对扩展开放,对修改关闭。
Classes should be open for extension, but closed for modification. -
依赖抽象,不依赖具体类。
Depend on abstractions. Do not depend on concrete classes.
5.3 OO 模式
5.3.1 新模式
命令模式(Command Pattern)
- 把请求封装为对象,
The Command Pattern encapsulates a request as an object, - 以便用不同的请求来参数化客户,对请求进行排队或记录请求日志,并支持可撤销的操作。
thereby letting you parameterize clients with different requests, queue or log requests, and support undoable operations.
5.3.2 模式回顾
1 创建型模式(Creational Patterns)
创建型模式与对象的创建有关。
Creational patterns concern the process of object creation.
-
工厂方法(Factory Method)
- 定义了一个创建对象的接口,但由子类决定要实例化哪个类。
The Factory Method Pattern defines an interface for creating an object, but lets subclasses decide which class to instantiate. - 工厂方法让类把实例化推迟到子类。
Factory Method lets a class defer instantiation to subclasses.
- 定义了一个创建对象的接口,但由子类决定要实例化哪个类。
-
抽象工厂(Abstract Factory)
- 提供一个接口,创建相关或依赖对象的家族,而不需要指定具体类。
The Abstract Factory Pattern provides an interface for creating families of related or dependent objects without specifying their concrete classes.
- 提供一个接口,创建相关或依赖对象的家族,而不需要指定具体类。
-
单例模式(Singleton Pattern)
- 确保一个类只有一个实例,并提供一个全局访问点。
The Singleton Pattern ensures a class has only one instance, and provides a global point of access to it.
- 确保一个类只有一个实例,并提供一个全局访问点。
2 结构型模式(Structural Patterns)
结构型模式处理类或对象的组合。
Structural patterns deal with the composition of classes or objects.
-
装饰者模式(Decorator Pattern)
- 动态地给一个对象添加一些额外的职责。
The Decorator Pattern attaches additional responsibilities to an object dynamically. - 就增加功能来说,装饰者模式相比生成子类更为灵活。
Decorators provide a flexible alternative to subclassing for extending functionality.
- 动态地给一个对象添加一些额外的职责。
3 行为型模式(Behavioral Patterns)
行为型模式描述类或对象之间的交互方式以及职责分配方式。
Behavioral patterns characterize the ways in which classes or objects interact and distribute responsibility.
-
策略模式(Strategy Pattern)
- 定义一个算法家族,把其中的算法分别封装起来,使得它们之间可以互相替换。
Strategy defines a family of algorithms, encapsulates each one, and makes them interchangeable. - 让算法的变化独立于使用算法的客户。
Strategy lets the algorithm vary independently from clients that use it.
- 定义一个算法家族,把其中的算法分别封装起来,使得它们之间可以互相替换。
-
观察者模式(Observer Pattern)
- 定义对象之间的一对多依赖,
The Observer Pattern defines a one-to-many dependency between objects - 这样一来,当一个对象改变状态时,它的所有依赖者都会被通知并自动更新。
so that when one object changes state, all of its dependents are notified and updated automatically.
- 定义对象之间的一对多依赖,