`
wuyaiswuya
  • 浏览: 22203 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

设计模式之策略模式(Strategy Pattern)

阅读更多

设计模式之策略模式(strategy-pattern

很久就想买head first 设计模式 这本书了,纠结了好久,终于在某个日子出手了。发觉上班以来一段时间都混混沌沌的,要增加知识了,我要成为一个架构师。

回归正题,动动手加深记忆:

   策略模式官方定义的是:策略模式定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。

乍一看,这啥是算法族啊,但是后面那句分别封装起来就看懂了,简单点来说就是对一个模型进行归类,然后在封装起来。在使用的时候可以自由组合,以应付令人蛋疼的客户需求。

策略模式的精华可以提炼为:“归类,封装,组合”这三个,按照事物的模型进行归类,对模型不同的类别进行算法封装,然后在根据用户的需求组合起来。

算算自己搞jav也有一段时间了,记得应该是大二暑假的时候开始疯狂,到现在也有两年了,参与了一个两个项目,有幸领导了一个项目来做,而且是按照自己的想法来做,毕业后就是有太多的想法了。现在不专心了。搞程序的光写不行,还是要敲一写代码来加深记忆。

求包养没包出去,和谐社会提倡鸭和鸡平起皮做。那就以鸭为例来说吧。先分析一下。

鸭子分为很多种,野鸭啊,家鸭啊还有就是鸭。有个共性,他们都是鸭,都有自己特色的模样,二一个呢所以的鸭子都会叫,当然叫声是不一样的,那声音也算一个,在一个,有些鸭子会飞,这个动作也算一个。好,现在归了三类出来,是 “模样”,“声音”,“动作”。

用脚趾头假设一下,鸭子的模样就是那样的,怎么变也不会变成鸡,所以模样是都有的。叫声呢不一定都有,人还有哑巴呢,在一个动作,就以飞来说,估计现在就野鸭会飞了。家鸭没那本事。所以我们归了三类。

1、鸭子的模样(所有的鸭子都有的特点)

            2、鸭子的声音(鸭子里也有哑巴)

3、鸭子的动作(以鸭飞的动作为例)

  现在都要求图文并茂,砖家说这样可以提高学习效率,比吃脑白金低碳多了,所以我也就画画图加深记忆。     

图片

在稍微变化一下把鸭子的三个行为分别抽象成三种行为:

图片

在进化一下,画成类图

图片

其中封装的对象为接口,这里不搞成抽象类是因为类可以实现多个接口,但是只能继承一个抽象类。

还是要贴贴代码,方便下次看

图片

抽象类Duck,所以的鸭子都要继承

图片

继承类DuckA

图片

封装的飞行类

图片

听着歌飞

图片

用翅膀飞

图片

封装的声音接口

图片

声音的实现类

最后就到测试了,搞一个TestDuck类,

图片

Strategy pattern 策略模式是搞完了,怎么也记不住 Strategy Pattern 这俩单词,杯具,再来回顾一下策略模式的官方定义

策略模式定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。

回顾一下我自己的定义

    策略模式简单来说就是 “归类”、“封装”、“组合”,说的明白点就是对模型进行分类,将变化的和不变化的进行归类,然后针对变化的进行封装成行为接口,将不变化的封装成共有的属性或者方法。最后一步是组合,根据用户的需要进行组合。搞定。

分享到:
评论

相关推荐

    设计模式之策略模式(Strategy Pattern)

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在软件开发中,我们经常遇到需要根据不同的条件或时间点执行不同算法的情况。策略模式提供了一种灵活的方式来处理这种情况,通过将每种算法封装为一个...

    设计模式 之 “策略模式[Strategy Pattern]”

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

    策略模式 Strategy Pattern

    策略模式是一种行为设计模式,它使得算法可以在运行时被更改。这种模式允许一个类的行为或其算法在运行时根据需要进行改变,通过这种方式,我们可以轻松地扩展不同的算法而不修改现有代码。 #### 主要问题 在软件...

    设计模式之蝉

    除了创建型模式,内容中还提到了“策略模式”(Strategy pattern),属于行为型设计模式。它定义了算法族,分别封装起来,使它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。在内容中提到的“我可以...

    Java设计模式之禅

    《Java设计模式之禅》是一本深入浅出讲解设计模式的书籍,书中不仅包含23种经典设计模式的案例,还详细介绍了设计模式背后的思想和原则,适合初学者以及对设计模式有一定了解的程序员阅读。本书旨在帮助读者理解如何...

    设计模式之策略模式源码(c#实现)

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在策略模式中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为模式。 在策略模式中,我们创建表示各种策略的对象和一个行为根据...

    C++设计模式(Design Pattern)范例源代码

    23种设计模式(Design Pattern)的C++实现范例,包括下面列出的各种模式,代码包含较详细注释。另外附上“设计模式迷你手册.chm” 供参考。 注:项目在 VS2008 下使用。 创建型: 抽象工厂模式(Abstract Factory) ...

    设计模式_策略模式.zip

    在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。 策略模式java-demo 在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 ...

    C#版 24种设计模式

    备忘录模式(Memento Pattern) 策略模式(Strategy Pattern) 抽象工厂模式(Abstract Factory Pattern) 代理模式(Proxy Pattern) 单例模式(Singleton Pattern) 迭代器模式(Iterator Pattern) 访问者模式(Visitor ...

    C#设计模式_设计模式_C#_

    创建型: 1. 单件模式(Singleton Pattern) 2. 抽象工厂(Abstract Factory) 3. 建造者模式(Builder) 4.... 策略模式(Strategy Pattern) 22. 访问者模式(Visitor Pattern) 23. 状态模式(State Pattern)

    桥接模式和策略模式的区别,内含可运行代码和两者详细区别

    桥接模式和策略模式是软件设计模式中的两种重要模式,它们在实现上有着相似之处,但各自的应用场景和设计理念有所不同。下面将详细阐述这两种模式的特点、区别以及它们在实际编程中的应用。 首先,桥接模式(Bridge...

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

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

    用Java实现23种设计模式

    用Java实现23种设计模式 1. 创建型模式 工厂模式(Factory Pattern) 抽象工厂模式(Abstract Factory Pattern) 单例模式(Singleton Pattern) 建造者模式(Builder Pattern) 原型模式(Prototype Pattern)...

    C#设计模式-吕震宇

    设计模式(22)-Strategy Pattern 设计模式(21)-Template Method Pattern 设计模式(20)-Visitor Pattern 设计模式(19)-Observer Pattern 设计模式(18)-Command Pattern 设计模式(17)-Chain of ...

    您的设计模式.pdf。

    本书《您的设计模式》对设计模式进行了详细的讲解,涵盖了策略模式、代理模式、单例模式、多例模式、工厂方法模式、抽象工厂模式、门面模式、适配器模式、模板方法模式、建造者模式、桥梁模式、命令模式、装饰模式、...

    Java24种设计模式,Java24种设计模式,24种设计模式,学会了这24种设计模式,可以打遍天下无敌手,设计模式非常重要

    1、策略模式STRATEGY PATTERN 2、代理模式PROXY PATTERN 3、单例模式SINGLETON PATTERN 4、多例模式MULTITION PATTERN 5、工厂方法模式FACTORY METHOD PATTERN 6、抽象工厂模式ABSTRACT FACTORY PATTERN 7、门面模式...

    设计模式整理代码-pattern.zip

    这里我们关注的是一个名为"pattern.zip"的压缩包文件,它包含了23种经典的设计模式,这些模式在实践中被广泛使用,提高了代码的可读性、可维护性和可扩展性。这篇文章将详细探讨这些设计模式及其应用。 首先,23种...

    JAVA 23种设计模式(全).Design Pattern_Java模式

    在软件开发领域,设计模式是经过时间和实践验证的解决方案,用于解决常见的编程问题。...无论你是初学者还是经验丰富的开发者,都应该将设计模式作为必备的技能之一,因为它们是构建高质量软件的基石。

Global site tag (gtag.js) - Google Analytics