设计模式之策略模式

        何为策略,就是可以实现目标的方案集合。而完成一项任务有不同的方式,每一种方式称为一个策略。策略模式就是定义一系列算法,将每一个算法封装起来,并让他们可以相互替换。很简单的一个例子:年底移动公司推出很多的活动,比如说:存话费赠食用油,交话费赠话费,买手机赠话费等等。推出这些个活动目的就只有一个,刺激消费为公司创造利润,而我们可以将这些个活动当做一个一个的策略,如下:

abstract classStrategy
{
	//算法方法
	publicabstract void acceptCash();
}
//策略A
classConcreteStrategyA:Strategy
{
	publicoverride void acceptCash()
	{
		console.Writeline("存话费赠食用油");
	}
}
//策略B
classConcreteStrategyB:Strategy
{
	publicoverride void acceptCash()
	{
		console.Writeline("交话费赠话费");
	}
}
//策略C
classConcreteStrategyC:Strategy
{
	publicoverride void acceptCash()
	{
		console.Writeline("买手机赠话费");
	}
}
//策略模式实现功能acceptCash
classContext
{
	Strategy strategy;
	//实例化不同的策略
	public Context (Strategystrategy)
	{
		this.strategy=strategy;
	}
	Public void GetResult()
	{
		return strategy.acceptCash();
	}
}

而主函数代码则如下:

Context context;
context=new Context(new ConcreteStrategyA);
context.GetResult();

        

    通过和简单工厂模式进行比较发现,简单工厂模式是通过工厂类将一些功能类进行封装从而返回不同实例化的对象,而策略模式则是为实现某一目的而进行的将实例化类和该功能的实现方法进行封装,从而直接调用策略类的输出方法则就能直接实现该功能。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 24
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值