`
piperzero
  • 浏览: 3465926 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

深入设计模式之一:策略模式

 
阅读更多

合作开发的这段时间,看了不少设计模式,这次分享下我对几个模式的理解,这次说说“策略模式”

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

如何理解呢?定义里说到的“封装算法”,这我们可以理解成封装变化,这是设计模式里重要的原则之一。把容易变化的部分抽取出来,以便以后需求变化时修改此部分,而不会影响不变的部分。

封装完,是如何达到相互替换的呢?这需要使用到设计模式的另一个原则:面向接口编程

面向接口编程和简单的使用接口有何不同呢?

简单的使用接口是这样:定义一个鸭子类,然后定义一个飞行接口。鸭子如果向飞,直接拿接口实现就可以了。如果还有其他的很多动物像猫呀,狗呀什么的想要飞,就拿这个接口来实现了。这样的好处是谁想实现都可以拿去用,非常灵活。那缺点是什么呢?缺点是,代码的复用性低,想要实现就得自己把内实现内容敲出来。

面向接口编程怎么解释呢:面向接口编程可以理解成“面向超类编程”。打个比方,把超类理解成变量的声明类型,实现该接口的类就是变量。类的任何对象都符合该类型,也就是都可以付给超类。

如何再模式图和代码中实现面向接口编程呢?这时候用策略模式来解释,就十分恰当了

这张图就是策略模式的一个应用:Duck类是实现算法的客户,封装起来的飞行和叫的行为就是算法。通过客户的duck类的setFlyBehavior和setQuackBehavior方法,设置具体要实现的封装中的方法。这样把要实现的行为交给了外部类,从而实现了松耦合,也就是面向接口编程的好处。

灵活的运用接口不是把接口实现在类里,而是通过接口调用实现接口的类。换个解释方法,不要继承,要组合组合的好处在于降低了类间的耦合。

这是我对策略模式的理解,与其说讲模式,不如说通过模式讲模式原则,只懂模式只能生搬硬套,懂了原则用模式肯定没问题。

分享到:
评论

相关推荐

    深入浅出设计模式之策略模式.pptx

    深入浅出设计模式之策略模式.pptx

    深入浅出设计模式

    深入浅出设计模式,比head first更易懂,共讲解了22种设计模式: 工厂模式 单例模式 建造模式 原型模式 适配器模式 桥梁模式 组合模式 装饰模式 门面模式 享元模式 代理模式 责任链模式 命令模式 解析器模式 迭代器...

    深入浅出设计模式之策略模式总结(一)附例子

    .................例子3_计时工资 博文链接:https://zfms.iteye.com/blog/1481020

    设计模式课件大全

    PPT内容包括:内附代码,实例,方便理解。 继承、封装、多态、UML 设计模式02 设计模式03-创建型模式 ...设计模式16-策略模式、模板方法、访问者 此PPT实例便于理解,对于深入理解OO思想有很大帮助。

    深入浅出设计模式-策略模式 ipad、iphone开发实现

    这是最为经典的东南大学出版社的《深入浅出设计模式》的第一章策略模式的ios软件实现! 陆续我还会将其余章源代码与大家分享。

    深入浅出java设计模式(高清中文PDF)

    文件类型为PDF文件,此文档对20多种java设计模式进行了详细讲解,在中文讲解的过程中还附有代码示例给学习者进行参考,使学习者通过实践更容易理解设计模式的原理。 本文档目录: 1.工厂模式 2.单例模式 3.建造...

    深入浅出之Java设计模式

    单态模式和简单工厂模式 工厂方法模式 抽象工厂模式 代理模式 代理模式之动态代理 策略模式 建造模式 门面模式

    深入浅出设计模式(C#版)--策略模式--示例代码

    深入浅出设计模式(C#版)--策略模式--示例代码

    抽象工厂模式+工厂方法模式+策略模式+类图实现手机加工厂

    深入浅出设计模式之抽象工厂模式+工厂方法模式+策略模式实现手机加工厂(加类图)

    深入理解JavaScript系列

    深入理解JavaScript系列(33):设计模式之策略模式 深入理解JavaScript系列(34):设计模式之命令模式 深入理解JavaScript系列(35):设计模式之迭代器模式 深入理解JavaScript系列(36):设计模式之中介者...

    java23种设计模式

    java23种设计模式,每一种模式都有详细的讲解,很全面,如果你想深入了解一下java23种设计模式,这会非常适合你的哦!上传乃为百度云连接,失效请留言。 内容: 001策略模式! N. B8 ~' D! f9 j+ g0 I 002观察者模式 ...

    研磨设计模式(完整带书签).part2.pdf

    如果你想要深入透彻地理解和掌握设计模式,并期望能真正把设计模式应用到项目中去,那么这是你不可错过的一本好书。 《研磨设计模式》难度为初级到中级,适合与所有开发人员、设计人员或者即将成为开发人员的朋友。...

    Java设计模式 版本2

    Java设计模式,目录:前言,UML建模技术,深入浅出UML类图,从招式与内功谈起——设计模式概述,面向对象设计原则,工厂三兄弟之简单工厂模式,工厂三兄弟之工厂方法模式,工厂三兄弟之抽象工厂模式,确保对象的唯一...

    深入浅出设计模式(中文版)

    5.9StrategyPattern(策略模式) 261 5.9.1定义 261 5.9.2现实例子——去机场的策略 263 5.9.3C#实例——排序方法 263 5.9.4Java实例——多格式输出 266 5.9.5优势和缺陷 272 5.9.6应用情景 272 5.10...

    深入浅出设计模式(中文版电子版)

    5.9StrategyPattern(策略模式) 261 5.9.1定义 261 5.9.2现实例子——去机场的策略 263 5.9.3C#实例——排序方法 263 5.9.4Java实例——多格式输出 266 5.9.5优势和缺陷 272 5.9.6应用情景 272 5.10...

    深入理解JavaScript系列(.chm)

    深入理解JavaScript系列(33):设计模式之策略模式 深入理解JavaScript系列(34):设计模式之命令模式 深入理解JavaScript系列(35):设计模式之迭代器模式 深入理解JavaScript系列(36):设计模式之中介者...

    深入解析C++编程中对设计模式中的策略模式的运用

    策略模式也是一种非常常用的设计模式,而且也不复杂。下面我们就来看看这种模式。 定义:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立...

    《深入浅出设计模式》读书笔记--策略模式与三个设计原则

    NULL 博文链接:https://bosshida.iteye.com/blog/1165049

    Android源码设计模式解析与实战

    本书专门介绍Android源代码的设计模式,共26章,主要讲解面向对象的六大原则、主流的设计模式以及MVC和MVP模式。主要内容为:优化代码的首步、开闭原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特原则、...

    深入理解JavaScript系列(33):设计模式之策略模式详解

    主要介绍了深入理解JavaScript系列(33):设计模式之策略模式详解,策略模式定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化不会影响到使用算法的客户,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics