设计模式笔记:策略模式与创建型模式解析

需积分: 0 3 下载量 91 浏览量 更新于2024-07-23 收藏 5.35MB DOCX 举报
"这是一份关于设计模式的学习笔记,主要参考了《Head First设计模式》。笔记涵盖了行为模式和创建型模式,详细介绍了策略模式、观察者模式、工厂方法模式、抽象工厂模式以及单件模式,并阐述了面向对象的设计原则。" 在设计模式的世界里,策略模式是一种对象行为型模式,它定义了一组算法族,并将每个算法封装起来,使它们可以互相替换。在策略模式中,算法的变化不会影响到使用它的客户。例如,通过鸭子游戏的例子,我们有抽象鸭子类作为客户,具体的鸭子类(如红头鸭、野鸭)作为实现,而“飞”和“叫”作为不同的算法族。这样,我们可以自由地更换不同类型的鸭子,它们的行为也随之改变,而不影响整体的鸭子游戏逻辑。 观察者模式是另一种对象行为型模式,用于建立一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。观察者模式有两种实现方式,即“推”和“拉”。在“推”方式中,被观察者主动将更新发送给所有观察者;而在“拉”方式中,观察者自己去获取最新的状态。 创建型模式主要用于对象的创建,其中工厂方法模式是一种对象创建型模式,它提供了一种创建对象的最佳方式。在工厂方法模式中,类的实例化过程被推迟到子类中进行,使得代码更易于扩展。抽象工厂模式则是在一个家族的工厂中创建一系列相关或相互依赖的对象,而无需指定它们的具体类。单件模式确保一个类只有一个实例,并提供一个全局访问点,通常用于配置中心、日志管理等场景。不过,实现单例模式时需要注意多线程环境下的并发问题,例如同步方法可能导致效率下降,而“双重检查加锁”策略可以有效地解决这个问题。 在面向对象的设计原则中,封装变化是核心之一,意味着应将可能变化的部分独立出来,避免与稳定部分耦合。此外,要针对接口(超类型)编程,而不是针对实现编程,依赖抽象而非具体类,以及多用组合少用继承,这些原则有助于提高代码的灵活性和可维护性。 总结来说,这份笔记提供了对设计模式的深入理解,不仅涵盖了各种模式的定义、类图、实现和适用性,还强调了面向对象设计的原则,对于学习和应用设计模式具有很高的参考价值。