策略者模式浅析

原创 2015年11月19日 11:50:09

此译文来自Head First设计模式的第一个实例,通过一个实例来展现设计代码的重要性,使组合的系统具有更大的弹性,不仅可将算法封装成类,更可以“在运行时动态地改变行为”,只要组合的行为对象符合正确的接口标准即可.

下面先展示下uml类图(用jude进行制作):

1、接口QuackBehavior.java


2、接口FlyBeahvior.java


3、Duck.java类及和其他类之间的关系


4、Duck的继承类MallardDuck.java

package cn.jon.base;

public class MallardDuck extends Duck {
	
	public MallardDuck() {
		quackBehavior=new Quack();
		flyBehavior=new FlyWithWings();
	}
	
	@Override
	public void display() {
		System.out.println("I'm a real Mallard Duck");
		
	}

}


5、测试类

package cn.jon.base;

public class TestDuck {

	public static void main(String[] args) {
		
		Duck mallard=new MallardDuck();
		mallard.performQuack();
		mallard.performFly();

	}

}


总结:

策略者模式定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户(Definea family of algorithms,encapsulate each one, andmake them interchangeable. Strategy lets the algorithmvary independently from clients that use it.

策略模式是一个比较容易理解和使用的设计模式,策略模式是对算法的封装它把算法的责任和算法本身分割开委派给不同的对象管理。策略模式通常把一个系列的算法封装到一系列的策略类里面,作为一个抽象策略类的子类。用一句话来说,就是“准备一组算法,并将每一个算法封装起来,使得它们可以互换”。

注:设计原则是:多用组合,少用继承





版权声明:本文为博主原创文章,未经博主允许不得转载。

Java设计模式之策略模式

本文属于23种设计模式系列。 介绍的是策略模式。
  • jason0539
  • jason0539
  • 2015年04月13日 07:20
  • 33955

设计模式--深度解析策略模式(Strategy Pattern)

前些天网购一本Head First Design Patterns,学习了一下,觉得写的挺好,而且挺有趣的,推荐大家都去买一本,真心不错。在这里我先讲一下,这两天学的,两个常见的设计模式,分别Stra...
  • qq_29282475
  • qq_29282475
  • 2015年12月04日 14:17
  • 3431

linux组调度浅析

cgroup与组调度       linux内核实现了control group功能(cgroup,since linux 2.6.24),可以支持将进程分组,然后按组来划分各种资源。比如:gr...
  • ctthunagchneg
  • ctthunagchneg
  • 2013年05月11日 17:08
  • 2720

strategy策略模式与adapter适配器模式的区别

策略模式:定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化; 使用的关键点是面对对象、面向接口编程。举个例子,以武士可以不断更换武器为例...
  • hellbaby666
  • hellbaby666
  • 2013年08月02日 10:20
  • 1516

设计模式实战应用之一:策略模式

策略模式的定义         策略模式是应用最普遍的设计模式之一。Gof 把策略模式归类到对象行为型模式,《设计模式:可复用面向对象软件的基础》对策略模式做出了明确的定义:“Define a fam...
  • defonds
  • defonds
  • 2013年11月19日 22:05
  • 6794

《JAVA与模式》之策略模式——我看过最好的一篇策略模式博文

《JAVA与模式》之策略模式(转载自http://www.cnblogs.com/java-my-life/archive/2012/05/10/2491891.html) 在阎宏博士的《JAV...
  • zhangliangzi
  • zhangliangzi
  • 2016年08月09日 11:30
  • 5925

与spring结合的策略模式

策略模式是23种设计模式之一,客户端通过制定多个算法并且封装,使得不同场景可以使用不同的策略算法。使得程序降低了耦合提高代码的复用性。接下来通过一个简单的实例来说明在实战中如何使用(即使是业务逻辑也是...
  • nethackatschool
  • nethackatschool
  • 2017年04月05日 18:58
  • 1348

【设计模式】策略模式详解

学习设计模式已经有一段时间了,前段时间一直在忙一个安卓的app,没时间更新。今天有点空,本着开源的精神,把策略模式的一些东西分享一下。...
  • H28496
  • H28496
  • 2015年06月07日 20:46
  • 1245

策略模式(政策模式) 策略枚举

策略模式 策略模式定义 Define a familly algorithms, encapsulate each one, and make them interchangeable.(定义一组...
  • fly_air
  • fly_air
  • 2016年09月03日 18:59
  • 701

设计模式之桥梁模式和策略模式的区别

桥接(Bridge)模式是结构型模式的一种,而策略(strategy)模式则属于行为模式。以下是它们的UML结构图。 桥梁模式: 策略模式: 在桥接模式中,Abstraction通过聚合的...
  • xingjiarong
  • xingjiarong
  • 2015年12月16日 21:57
  • 2610
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:策略者模式浅析
举报原因:
原因补充:

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