JAVA设计模式之 策略模式【Strategy Pattern】

原创 2013年12月05日 09:42:27
            JAVA设计模式、都是前辈们积累下来的经典的设计思想、可能我们在平时的代码中都没有经常用到、我曾经在读书的时候有过一段时间每天去学习一种设计模式、但是在后来的工作中、通常都是在公司自主的框架中编写一些业务处理代码、最近在学习Android的过程中、发现Android里面应用了大量的设计模式、于是我便翻出以前看过的一本很经典设计模式书籍出来、把里面每种设计模式、重新代码写一遍、一方面加深自己的设计思想、另一方面也希望更多的人学习到、如果您是一个初级的coder,可以从中领会到怎么设计

一段优秀的代码...


           刘备要到江东娶老婆了,走之前诸葛亮给赵云(伴郎)三个锦囊妙计,说是按天机拆开解决棘手问题,嘿,还别说,真是解决了大问题,搞到最后是周瑜陪了夫人又折兵呀,那咱们先看看这个场景是什么样子的。
先说这个场景中的要素:三个妙计(我们可以理解为三个策略),一个锦囊(可看成是一个上下文对象),一个赵云(策略执行者),妙计是小亮同志给的,妙计是放置在锦囊
里,俗称就是锦囊妙计嘛,那赵云就是一个干活的人,从锦囊中取出妙计,执行,然后获胜,

用JAVA 程序怎么表现这个呢?我们先看类图:



三个妙计是同一类型的东东,那咱就写个策略接口:



然后再写三个实现类,有三个妙计嘛:

策略一的实现:



策略二的实现:



策略三的实现:



好了,大家看看,三个妙计是有了,那需要有个地方放这些妙计呀,放锦囊呀,我们可以把这个锦囊专业理解为上下文对象:



然后就是赵云雄赳赳的揣着三个锦囊,拉着已步入老年行列的、还想着娶纯情少女的、色迷迷的刘老爷子去入赘了,嗨,还别说,小亮的三个妙计还真是不错,瞅瞅:




就这三招,搞的周郎是“陪了夫人又折兵”呀!这就是策略模式,高内聚低耦合的特点也表现出来了...


Android中的应用:

下面说说在Android里面的应用。在Android里面策略模式的其中一个典型应用就是Adapter,在我们平时使用的时候,一般情况下我们可能继承BaseAdapter,然后实现不同的View返回,GetView里面实现不同的算法。外部使用的时候也可以根据不同的数据源,切换不同的Adapter。



【Java设计模式】· 策略模式(Strategy Pattern)

1.策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。需要的时候可以灵活地调用方法,也可以对方法(策略)进行修改,客户端调用方法...
  • ReusLi
  • ReusLi
  • 2015年08月12日 10:45
  • 383

Java开发之设计模式--策略模式(Strategy Pattern)

模拟场景:刘备要到江东娶老婆了,走之前诸葛亮给赵云(伴郎)三个锦囊妙计,说是按天机拆开解决棘手问题,嘿,还别说,真是解决了大问题,搞到最后是周瑜陪了夫人又折兵呀,那咱们先看看这个场景是什么样子的。先说...

设计模式之三 --- 策略模式(Strategy Pattern) (java)

策略模式(Strategy):它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。 【1】基本概念           策略模式是一种定义一系列算...
  • sada09
  • sada09
  • 2012年08月13日 10:32
  • 320

Java设计模式——策略模式【Strategy Pattern】

摘自:Java设计模式经典搞笑版 刘备要到江东娶老婆了,走之前诸葛亮给赵云(伴郎)三个锦囊妙计,说是按天机拆开解决棘手问题, 嘿,还别说,真是解决了大问题,搞到最后是周瑜陪了夫人又折兵呀,那咱们先...

设计模式学习笔记---策略模式strategy pattern(Java版)

一、场景 市场人员接到单之后的报价策略,比如普通用户或老客户,还是小批量或大批量。 二、实质 策略模式对应于解决某一个问题的一个算法族,允许用户从该算法族中任选一个算法解决某一问...

Java设计模式——策略模式[Strategy Pattern]

策略模式,定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。  策略模式组成:1.策略类,通常由一个接口或者抽象类实现;2.具...

设计模式(Design Pattern) - 行为型模式(Behavioral Pattern) - 策略模式(Strategy) - Java实现

设计模式(Design Pattern) - 行为型模式(Behavioral Pattern) - 策略模式(Strategy) 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可...
  • achi010
  • achi010
  • 2017年06月18日 14:48
  • 120

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

概述:        策略模式是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理。策略模式通常把一个系列的算法包装到一系列的策略类里面,作为一个抽象策略类的子类。用一句话来说,...

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

策略模式:定义算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 转:http://www.cnblogs.com/wu-jian/archive/201...
  • mdj_bj
  • mdj_bj
  • 2012年07月12日 11:37
  • 1116
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JAVA设计模式之 策略模式【Strategy Pattern】
举报原因:
原因补充:

(最多只允许输入30个字)