设计模式-策略模式

设计模式-策略模式

策略模式测试类
*策略模式:分别封装行为接口,实现算法组,超类里放行为接口对象,在子类里
*具体设行为对象。原则是:分离变化部分,封装接口,基于接口编程的各种功能
*此模式让行为算法的变化独立于算法使用者

定义行为接口以及实现

package cn.china.interfaces;
/**
 * 飞行接口
 * @author yxq
 *
 */
public interface FlyBehavior {
	public void fly();

}

package cn.china.interfaces;
/**
 * 叫声接口
 * @author yxq
 *
 */
public interface QuackBehavior {
	public void quack();
}
=======================================以下是实现类================================================
package cn.china.impls;

import cn.china.interfaces.FlyBehavior;

public class BadFlyBehavior implements FlyBehavior{

	@Override
	public void fly() {
		// TODO Auto-generated method stub
		System.out.println("--BadFly--");
	}

}

package cn.china.impls;

import cn.china.interfaces.QuackBehavior;
/**
 * 叫声的具体实现
 * @author yxq
 *
 */
public class GAGAQuackBehavior implements QuackBehavior{

	@Override
	public void quack() {
		// TODO Auto-generated method stub
		System.out.println("--gagaDauck--");
	}

}


定义抽象类Dunck


package cn.china.extendss;

import cn.china.interfaces.FlyBehavior;
import cn.china.interfaces.QuackBehavior;

/**
 * 鸭子抽象类
 * @author yxq
 *
 */
public abstract class Duck {
	FlyBehavior flyBehavior;
	QuackBehavior quackBehavior;
	public Duck() {}
	public void Fly() {
		flyBehavior.fly();
	}
	public void Quack() {
		quackBehavior.quack();
	}
	public void setFly(FlyBehavior fb) {
		this.flyBehavior = fb;
	}
	public void setQuack(QuackBehavior qb) {
		this.quackBehavior = qb;
	}
	
	public abstract void display();
}

定义抽象类Dunck实现

package cn.china.extendss;

import cn.china.impls.BadFlyBehavior;
import cn.china.impls.GAGAQuackBehavior;

/**
 * 实现类
 */
public class GreenHeadDuck extends Duck{
	
	public GreenHeadDuck() {
		flyBehavior = new BadFlyBehavior();
		quackBehavior = new GAGAQuackBehavior();
	}
	@Override
	public void display() {
		// TODO Auto-generated method stub
		System.out.println("--GreenHeadDuck--");
	}

}
========================================================================================
package cn.china.extendss;

import cn.china.impls.BadFlyBehavior;
import cn.china.impls.GAGAQuackBehavior;

public class RedHeadDuck extends Duck{
	public RedHeadDuck() {
		flyBehavior = new BadFlyBehavior();
		quackBehavior = new GAGAQuackBehavior();
	}
	@Override
	public void display() {
		// TODO Auto-generated method stub
		System.out.println("--RedHeadDuck--");
	}

}

测试类

package cn.china.test;

import cn.china.extendss.Duck;
import cn.china.extendss.GreenHeadDuck;
import cn.china.extendss.RedHeadDuck;

/**
 * 策略模式测试类
 * @author yxq
 *策略模式:分别封装行为接口,实现算法组,超类里放行为接口对象,在子类里
 *具体设行为对象。原则是:分离变化部分,封装接口,基于接口编程的各种功能
 *此模式让行为算法的变化独立于算法使用者
 */
public class ClmsTest {
	public static void main(String[] args) {
		Duck greenDuck = new GreenHeadDuck();
		greenDuck.display();
		greenDuck.Quack();
		greenDuck.Fly();
		Duck redDuck = new RedHeadDuck();
		redDuck.display();
		redDuck.Quack();
		redDuck.Fly();
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值