《Head_First设计模式》.pdf
### 《Head_First设计模式》知识点总结 #### 一、策略模式详解 ##### 1.1 基本概念 **策略模式**是一种行为设计模式,它使你能在运行时改变对象的行为。此模式允许算法独立于使用它们的客户端而变化。 **面向对象的基本概念**包括: - **抽象**:通过抽象将复杂的问题简化,提取出共同的特征或行为,形成通用的解决方案。 - **封装**:隐藏对象的具体实现细节,并对外提供统一的接口访问。 - **继承**:允许创建新类来继承已有类的属性和方法,从而实现代码复用。 - **多态**:同一操作作用于不同的对象,可以有不同的解释,并执行不同的操作。 **软件设计原则**: - **封装变化**:将可能发生变更的部分独立出来,减少变更对其他模块的影响。 - **针对接口编程**:声明变量时使用接口或抽象类,而非具体实现类,增强灵活性。 - **多用组合,少用继承**:使用组合的方式提高代码的复用性和可维护性。 ##### 1.2 实现案例 - **抽象类**: `Character` - **接口**: `WeaponBehavior` - **具体类**: `King`, `Queen`, `Troll`, `Knight` 继承 `Character`;`KnifeBehavior`, `BowAndArrowBehavior`, `AxeBehavior`, `SwordBehavior` 实现 `WeaponBehavior`。 - `Character` 类包含一个 `WeaponBehavior` 的引用,通过 `setWeapon()` 方法设置武器行为。 #### 二、策略模式实例分析 **示例代码解析**: ```java public abstract class Car { RunBehavior rb; public void go() { rb.go(); } public void setRunBehavior(RunBehavior rb) { this.rb = rb; } public abstract void display(); } public class Bus extends Car { public Bus() { rb = new RunWithGasoline(); } @Override public void display() { // 公共汽车 } } public class CarModel extends Car { public CarModel() { rb = new RunNoWay(); } @Override public void display() { // 汽车模型 } } public interface RunBehavior { public void go(); } public class RunWithGasoline implements RunBehavior { public void go() { // 用汽油驱动 } } public class RunWithElectricity implements RunBehavior { public void go() { // 用电力驱动 } } public class RunNoWay implements RunBehavior { public void go() { // 不能行使 } } public class ToyCar extends Car { public ToyCar() { rb = new RunWithElectricity(); } @Override public void display() { // 玩具电动车 } } ``` 这段代码展示了如何使用策略模式来处理不同的汽车运行行为。通过定义一个抽象类 `Car` 和一个接口 `RunBehavior`,可以根据具体需求选择不同的实现方式。 #### 三、观察者模式简介 ##### 3.1 定义与用途 **观察者模式**定义了一种一对多的关系,使得多个观察对象能同时监听某个主题对象。当主题对象发生变化时,会自动通知所有的观察者对象进行相应的更新。这有助于实现解耦,即主题对象与观察者对象之间无需直接相互了解。 **软件设计原则**: - **松耦合**:通过降低对象间的相互依赖度,提高系统的灵活性和可维护性。 **观察者模式的优点**: - 主题对象与观察者对象之间实现了解耦。 - 观察者和主题对象都可以轻松地被复用。 - 支持广播通信。 #### 四、总结 《Head_First设计模式》这本书通过具体的例子深入浅出地介绍了多种设计模式的应用场景和实现方法。其中策略模式和观察者模式作为常用的设计模式之一,在实际项目开发中有着广泛的应用。通过理解这些模式背后的原理和设计思想,可以帮助开发者更好地组织代码结构,提高软件的可扩展性和可维护性。对于初学者来说,通过本书学习这些设计模式,不仅能够掌握设计模式的基本用法,还能够培养出更高级别的编程思维。
剩余112页未读,继续阅读
- 粉丝: 7
- 资源: 15
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助