`
Bruce.Wang
  • 浏览: 8398 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

设计模式之(一)-策略模式(strategy)

阅读更多

 

         策略模式教我们怎么用组合来解决一些继承(当中的问题。那就是我们没有办法用继承来封装变化的行为。继承只能提取类的公共行为和属性,但是似乎对于变化的行为无计可施。在策略模式里就涉及了我们的OO的设计原则一些设计原则:

1. 封装变化。分析系统的变化因素加以封装。

2. 多用组合,少用继承。组合能封装变化建立弹性的系统,还能在运行时改变对象的行为。

3. 对接口编程而不是对类编程。用组合封装行为的时候要让其实现接口,这样就可以对一个统一的接口类型编程了。

下面举例说明:

这里我们举个家用电器的例子,我们用一个电器的基类,封装所有家用电器公共的方法(开机和关机)。

 

现在我们有冰箱,空调,洗衣机继承电器类。

 

 

但是现在对于一些变化的行为我们就没有办法封装了,比如空调的制冷,冰箱的制冷,洗衣机的洗衣操作。但是我们通过组合可以做到。我们在电器基类里组合制冷和洗衣。

 

但是这样的话我们似乎没有办法空调的制冷和冰箱的制冷并且没有办法动态的改变Wiring里两个属性的值。我们可以让制冷和洗衣继承接口从而对接口类型操作。(顺便说一句,Visio里的类图好像不是那么好用,换用magicDraw画一个,呵呵)

 

我们可以对Wiring类的两个属性加set方法,这样就可以在运行时改变行为了。再加两个执行动作方法perReg(),perWash()。

Public  void perRef(){

         regfrigreate.refrigreate();

}

Public void prewash(){

         wash.wash();

}

测试代码:

Wiring ref = new Refrigreate();

ref.setRefrigreate(new SaveRef());

ref.perRef();

ref.setRefrigreate(new AirRef());

ref.perRef();

这样我们就可以加很多实现接口的类用,而不会要修改Wiring类了。

最后在重复OO设计的其中三个原则:封装变化。多用组合,少用继承。对接口编程而不对类编程。

 

 

分享到:
评论

相关推荐

    设计模式系列博客--策略模式

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在软件开发中,我们经常遇到需要根据不同的条件或场景来改变算法的情况。策略模式就是为了解决这类问题而诞生的,它允许我们在不修改对象本身的情况下...

    设计模式---策略者模式

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在软件开发中,我们经常遇到需要在不同时间或根据不同条件执行不同算法的情况。策略模式允许我们将算法封装到独立的可互换的策略类中,使得算法的变化...

    设计模式--策略模式java例子

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在Java中,策略模式通常用于替换硬编码的条件语句,使代码更加灵活、可扩展和易于维护。下面我们将详细探讨策略模式的核心概念、实现方式以及在实际...

    设计模式精解-GoF-23种设计模式解析--附C++源代码

    - 策略模式(Strategy):定义一系列的算法,把它们一个个封装起来,并且使它们可以互相替换。 - 模板方法模式(Template Method):定义一个操作中的算法骨架,而将一些步骤延迟到子类中。 - 访问者模式...

    设计模式-策略模式(Strategy)

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。这种模式允许你使用算法族,而无需在代码中硬编码这些算法。通过将算法封装到具有共同接口的独立对象中,策略模式使得你可以根据需要灵活地切换算法,...

    《设计模式18》-策略模式.ppt

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在《设计模式18》-策略模式.ppt中,这个模式被详细地讲解,包括其定义、意图、适用性、结构、效果以及如何使用。 策略模式的核心思想是将算法族封装...

    设计模式系列源码---策略模式

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在软件开发中,我们经常遇到需要根据不同的条件或场景来执行不同算法的情况。策略模式允许我们将这些算法封装成独立的类,使得它们可以互换,从而提高...

    HeadFirst 设计模式学习笔记1--策略模式Demo

    在HeadFirst的《设计模式》一书中,作者以通俗易懂的方式介绍了各种设计模式,包括策略模式,适合初学者和有经验的开发者深入理解设计模式的原理和应用。通过阅读这本书,我们可以更好地掌握如何在实际项目中灵活...

    Java 设计模式-策略模式(Strategy)Android讲解

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在Java中,策略模式是通过定义一系列算法,并将每个算法封装起来,使它们可以相互替换,让算法独立于使用它的客户而变化。这种模式在Android开发中...

    JAVA设计模式例程-策略模式

    在众多的设计模式中,策略模式(Strategy Pattern)是一种行为设计模式,它使你能在运行时改变对象的行为。在这个“JAVA设计模式例程-策略模式”的压缩包中,我们可以深入探讨策略模式的原理及其应用。 策略模式的...

    c++设计模式-行为型模式-策略模式

    c++设计模式-行为型模式-策略模式;qt工程;c++简单源码; 策略(Strategy)模式的定义:该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于...

    走进设计模式之 策略模式(Strategy)

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在软件设计中,有时我们需要根据不同的场景或条件选择不同的算法或行为。策略模式允许我们将这些算法封装成独立的类,每个类代表一种策略,然后在运行...

    设计模式-策略者

    "策略者"(Strategy)设计模式是其中的一种行为模式,它定义了一系列算法,并将每个算法封装起来,使它们可以相互替换。这种模式让算法的变化独立于使用算法的客户。 在《设计模式-策略者》这篇文章中,作者深入浅...

    java设计模式---诙谐易懂版

    1. 策略模式(Strategy Pattern)是一种行为设计模式,允许在运行时选择算法的行为。策略模式的意图是定义一系列算法,将每个算法封装起来,并使它们可以互换。策略模式让算法的变化独立于使用算法的客户端。在提供...

    设计模式-策略模式-c++版

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在C++中,策略模式主要用于封装一系列算法,并让它们之间可以互相替换,使得算法的变化独立于使用算法的客户。这种模式通常涉及三个主要角色:策略...

    android应用开发设计模式之-策略模式

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在Java编程语言中,尤其是在Android平台上,这种模式能够使我们的代码更加灵活、可扩展且易于维护。 策略模式的核心思想是定义一系列算法,并将每个...

    设计模式培训-strategy

    ### 设计模式培训-strategy #### 一、设计模式概览 设计模式是软件工程领域的一个重要概念,它提供了一套解决常见问题的有效方法。在软件开发的过程中,开发者经常会遇到相似的问题,这些问题往往有着类似的解决...

    php设计模式-策略模式-例题学习

    策略模式是设计模式的一种,它允许我们在运行时动态地改变对象的行为。在这个"php设计模式-策略模式-例题学习"的例子中,我们将深入理解策略模式的运用及其在PHP中的实现。 首先,让我们来看看核心的类和接口: ...

    设计模式--策略模式StrategyPattern

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在软件开发中,我们经常遇到需要根据不同的条件或场景来执行不同算法的情况。策略模式提供了一种将算法族封装到各自独立的类中,并在运行时选择具体...

Global site tag (gtag.js) - Google Analytics