为什么策略模式叫做策略模式

系统 1583 0

  我想我疯了。。。跑到网吧来写代码。。。。。

  昨天看了《Head First 设计模式》刚看了第一章,感觉收获很大,至少我知道什么是策略模式。。。但是到昨天看完之后我还是不了解为什么叫做策略模式。。。后来在厕所里想了下。。。。。。。今天就跑到网吧把我的想法写出来了。。。放清明,电脑还在学校(悲剧的台式机)

战将类--小说《修真世界》中战将就使用策略的高手,将使用的策略的具体实现交给Strategy类去实现,就把变化的部分的分离开了。

 

    package com.wjh.celue;

public class Fights {
	//策略实例变量
   	Strategy myStrategy;
	public Fights(Strategy strategy)
	{
		//初始化
		this.myStrategy = strategy;
	}
	//设置策略
	public void SetStrategy(Strategy strategy)
	{
		this.myStrategy = strategy;
	}
	//使用策略
	public void useStrategy()
	{
		myStrategy.use();
	}

}
  

 策略类---策略的总父类,其子类必须实现其use方法,所有的具有相互替换性

    package com.wjh.celue;
/**
 * 策略的抽象类,策略的子类必须实现use方法
 * @author Administrator
 *
 */
public abstract class Strategy {
	public abstract void use();

}

  

 空城计--策略的子类,实现了use方法.

    package com.wjh.celue;

import static com.wjh.print.MyPrint.*;
//继承策略类
public class KongChengJi extends Strategy{

	@Override
	public void use() {
		// TODO Auto-generated method stub
		println("使用空城记");	
	}

}
  

 

美人计--策略的子类,同样实现了use方法.

    package com.wjh.celue;

import static com.wjh.print.MyPrint.*;
/**
 * 策略类的子类,实现use方法
 * @author Administrator
 *
 */
public class MeiRenJi extends Strategy{

	@Override
	public void use() {
		// TODO Auto-generated method stub
		println("使用美人计");
	}

}
  

 主类---创建战将类实例小娘(在<<修真世界>>中,小娘是一个战将),他会使用各种策略.

创建各种策略对象,并让小娘使用.

因为他们都继承于策略类,在多态的神奇效果下,他们都调用他们本身的use方法.

    package com.wjh.main;

import com.wjh.celue.Fights;
import com.wjh.celue.KongChengJi;
import com.wjh.celue.MeiRenJi;

public class MainUi {
	public static void main(String[] args)
	{
		//创建战将类对象小娘
		Fights xiaoLiang = new Fights(new KongChengJi());
		//小娘使用策略
		xiaoLiang.useStrategy();
		//小娘换策略
		xiaoLiang.SetStrategy(new MeiRenJi());
		//小娘使用策略
		xiaoLiang.useStrategy();
	}

}
  

 总结...虽然小娘并不会使用空城计和美人计,但是通过这个例子,我更了解为什么策略模式叫做策略模式...

 

策略模式的定义:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化(来自百度百科)

 

但我自己觉得那些算法就是一个个的策略(或许他们本来就是一样的),用于解决各种问题.

而因为计划永远赶不上变化,所以我们把变化拿出来,整成一个方法集(例如:36计).在实施(打仗)的时候,

我们根据需要去使用相应的方法(策略),这就达到了一种以不变应万变的效果...

 

 

备注:以上内容都是我自己在学习过程中的想法,或许是错的,请大家告诉我......谢谢...

为什么策略模式叫做策略模式


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论