策略者模式浅析

此译文来自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.

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

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





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值