读书笔记-----------------------
策略模式:定义一组算法族,分别封装起来,让各个算法之间可以相互替换。此模式让算法的变化独立于使用算法的客户。
面向对象(OO)的四个基本概念是:抽象、封装、继承、多态。
继承的好处是实现了代码的复用。
软件设计原则1:多用组合,少用继承。使用组合的方式可以实现代码的分割,使代码有更大的弹性,更好地提高了复用性。
软件设计原则2:封装变化--把软件中那些在将来可能产生变化的地方独立出来,与其他部分分割以减少变化时对它们的影响。这样的设计可以使系统变得有弹性,更好地应对变化。
软件设计原则3:针对接口编程,而不针对实现编程。依据该原则,声明一个变量时要把它声明为超类型(接口或抽象类),而不是实现类。
我的理解-------------------------
1 将基类作为抽象类,其中包含行为接口。
2 在实现时,具体类继承基类,并且构造了实现接口的类的对象。
3 在选择上述具体对象时,实质就是在算法族中选择。表现为一种策略。
4 抽象类继承是为了将不变的部分尽可能进行复用;接口部分是将可能变化的部分进行封装,提供选择。
5 可以这样做的原因:接口上转型。
代码实例-------------------
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() { // 玩具电动车 } }
相关推荐
c++设计模式-行为型模式-策略模式;qt工程;c++简单源码; 策略(Strategy)模式的定义:该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于...
JAVA-设计模式-行为型模式-策略模式
《C++设计模式--基于Qt4开源跨平台开发框架》一书主要探讨了如何在C++编程中利用设计模式,并结合Qt4框架进行高效的跨平台应用开发。设计模式是软件工程中的重要概念,它们是经过时间和实践验证的解决特定问题的模板...
在这个"php设计模式-策略模式-例题学习"的例子中,我们将深入理解策略模式的运用及其在PHP中的实现。 首先,让我们来看看核心的类和接口: 1. `HandStrategyInterface.php`: 这个文件定义了一个接口`...
策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在Java中,策略模式通常用于替换硬编码的条件语句,使代码更加灵活、可扩展和易于维护。下面我们将详细探讨策略模式的核心概念、实现方式以及在实际...
在《设计模式-策略者》这篇文章中,作者深入浅出地介绍了策略模式的基本概念、结构和实现方式。文章可能涵盖了以下几个关键知识点: 1. **模式定义**:策略模式允许在运行时选择不同的算法或策略,提供了一种用面向...
通过阅读《设计模式-Java语言中的应用》,读者不仅可以掌握设计模式的基本概念和原理,还能学习到如何在实际项目中选择合适的设计模式,以及如何优雅地在Java代码中实现这些模式。这将有助于提升开发者的编程技巧,...
北大青鸟关于设计模式的PPT,讲述的非常清晰,对于初学设计模式的人来说,非常有用。本篇是关于策略模式的PPT
策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在软件开发中,我们经常遇到需要在不同时间或根据不同条件执行不同算法的情况。策略模式允许我们将算法封装到独立的可互换的策略类中,使得算法的变化...
策略模式是Java设计模式中的一种行为模式,它允许在运行时选择算法或策略,从而提供了更大的灵活性。在HeadFirst的《设计模式》一书中,第一章深入浅出地讲解了这一模式,通过实例帮助读者理解其核心概念和应用场景...
5. **策略模式** - QT4的信号和槽可以视为一种策略,开发者可以根据需要连接不同的槽函数来改变对象的行为。 6. **命令模式** - 可以利用QT4的QMetaObject系统和QSignalMapper来实现命令模式,通过信号触发不同的...
策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在软件开发中,我们经常遇到需要根据不同的条件或场景来执行不同算法的情况。策略模式提供了一种将算法族封装到各自独立的类中,并在运行时选择具体...
在这个“java设计模式-策略模式”的示例中,我们将深入探讨如何使用策略模式来实现一个简单的超市促销系统。 策略模式的核心思想是定义一系列的算法,并将每一个算法封装起来,使它们可以互相替换。这使得算法的...
策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在iOS开发中,策略模式经常被用来处理算法的可变性和封装多种行为。通过使用策略模式,开发者可以将算法封装在独立的策略类中,使得算法可以独立于...
- 策略模式(Strategy):定义一系列的算法,把它们一个个封装起来,并且使它们可以互相替换。 - 模板方法模式(Template Method):定义一个操作中的算法骨架,而将一些步骤延迟到子类中。 - 访问者模式...
描述中的"利用设计模式思想扩展的画皮程序"暗示了可能使用了"策略模式"。在画笔程序中,不同的绘画工具(如铅笔、刷子、橡皮擦等)可以看作是策略,每种工具都有其特定的绘制策略。用户选择不同的工具时,实际上是在...
【策略模式】是一种设计模式,它的核心思想是将不同的算法或行为封装成独立的类,这些类具有统一的接口,从而使客户端可以灵活地选择并使用其中的任何一种算法,而无需关心具体实现的细节。这种模式可以有效地避免...
设计模式通常分为三类:创建型模式(如工厂方法、抽象工厂、单例、建造者、原型)、结构型模式(如适配器、桥接、装饰、组合、代理、外观、享元)和行为型模式(如责任链、命令、解释器、迭代器、访问者、备忘录、...
例如,在"深入浅出设计模式(C#版)--策略模式--示例代码"中,可能会有一个`IDuck`接口,它定义了飞、叫等基本行为。然后有多个具体的鸭子类型,如`MallardDuck`、`RedheadDuck`等,每个类型可能有不同的飞行和叫声...