您的位置:首页 > 其它

设计模式之策略模式

2013-01-05 15:05 176 查看
设想一种场景,小明要去商店买东西,可是他不知道去商店的路线该怎么走,这是他爸爸给了它一锦囊说你不知道怎么走那么你就打开这个锦囊里面会有去商店的办法的,然后小明就拿出爸爸给的锦囊出去了:

package com.djk.celuo;

/**
* 策略模式
* @author djk
*
*/
public class TacticsTest
{
public static void main(String[] args)
{

XiaoMing xiaoMing = new XiaoMing();

//策略1
Tactics tactics = new TacticsOne1();
//策略2
Tactics tactics2 = new TacticsOne2();

//锦囊
Tips tips = new Tips();

//给锦囊放策略1
tips.setTactics(tactics);

//给小明一个锦囊
xiaoMing.setTips(tips);

//小明去商店
xiaoMing.goToShopping();

}
}

/**
* 策略接口
* @author djk
*
*/
interface Tactics
{
/**
*去商店的路线
*
*/
void goShopping();
}

/**
* 第一种策略
* @author djk
*
*/
class TacticsOne1 implements Tactics
{
public void goShopping()
{
System.out.println("去商店的路线1");
}
}

class TacticsOne2 implements Tactics
{

public void goShopping()
{
System.out.println("去商店的路线2");
}

}

/**
* 存放策略的锦囊
* @author djk
*
*/
class Tips
{
private Tactics tactics;

public Tactics getTactics()
{
return tactics;
}

public void setTactics(Tactics tactics)
{
this.tactics = tactics;
}
}

/**
*小明
* @author djk
*
*/
class XiaoMing
{
/**
* 锦囊
*/

private Tips tips;

public void goToShopping ()
{
//小明忘记带爸爸给的锦囊了
if(null == tips)
{
System.out.println("忘记带锦囊啦。。。");
return ;
}

Tactics tactics = tips.getTactics();

//爸爸没有在锦囊里放策略给了一个空的锦囊啊
if(null ==tactics)
{
System.out.println("给的锦囊是空的啊里面没有放策略啊");
return ;
}

tactics.goShopping();
}

public Tips getTips()
{
return tips;
}

public void setTips(Tips tips)
{
this.tips = tips;
}

}

这就是我写的一个策略模式。。。。有不对的地方请指出谢谢。。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: