20.策略者模式(Stragety Pattern)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace ConsoleApplication3
{
/// <summary>
/// 策略模式是针对一组算法,将每个算法封装到具有公共接口的独立的类中,
/// 从而使它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。
/// </summary>
class Program
{
static void Main(string[] args)
{
// 个人所得税方式
InterestOperation operation = new InterestOperation(new PersonalTaxStrategy());
Console.WriteLine("个人支付的税为:{0}", operation.GetTax(5000.00)); // 企业所得税
operation = new InterestOperation(new EnterpriseTaxStrategy());
Console.WriteLine("企业支付的税为:{0}", operation.GetTax(50000.00));
Console.Read();
}
} // 所得税计算策略
public interface ITaxStragety
{
double CalculateTax(double income);
} // 个人所得税
public class PersonalTaxStrategy : ITaxStragety
{
public double CalculateTax(double income)
{
return income * 0.12;
}
} // 企业所得税
public class EnterpriseTaxStrategy : ITaxStragety
{
public double CalculateTax(double income)
{
return (income - ) > ? (income - ) * 0.045 : 0.0;
}
} /// <summary>
/// 选择方法
/// </summary>
public class InterestOperation
{
private ITaxStragety m_strategy;
public InterestOperation(ITaxStragety strategy)
{
this.m_strategy = strategy;
} public double GetTax(double income)
{
return m_strategy.CalculateTax(income);
}
}
}
20.策略者模式(Stragety Pattern)的更多相关文章
- C#设计模式(20)——策略者模式(Stragety Pattern)
一.引言 前面主题介绍的状态模式是对某个对象状态的抽象,而本文要介绍的策略模式也就是对策略进行抽象,策略的意思就是方法,所以也就是对方法的抽象,下面具体分享下我对策略模式的理解. 二.策略者模式介绍 ...
- c#设计模式之策略者模式(Strategy Pattern)
场景出发 假设存在如下游戏场景: 1:角色可以装备木剑,铁剑,魔剑3种装备,分别对怪物造成20HP,50HP,100HP伤害(未佩戴装备则无法攻击); 2角色可以向怪物攻击,一次攻击后损失角色所佩戴装 ...
- C#设计模式之二十策略模式(Stragety Pattern)【行为型】
一.引言 今天我们开始讲"行为型"设计模式的第七个模式,该模式是[策略模式],英文名称是:Stragety Pattern.在现实生活中,策略模式的例子也非常常见,例如,在一个 ...
- C#设计模式之十九策略模式(Stragety Pattern)【行为型】
一.引言 今天我们开始讲“行为型”设计模式的第七个模式,该模式是[策略模式],英文名称是:Stragety Pattern.在现实生活中,策略模式的例子也非常常见,例如,在一个公司中,会有各种工作人员 ...
- 【20】策略者模式(Strategy Pattern)
一.引言 本文要介绍的策略模式也就是对策略进行抽象,策略的意思就是方法,所以也就是对方法的抽象,下面具体分享下我对策略模式的理解. 二.策略者模式介绍 2.1 策略模式的定义 在现实生活中,策略模式的 ...
- 设计模式(一):“穿越火线”中的“策略模式”(Strategy Pattern)
在前段时间呢陆陆续续的更新了一系列关于重构的文章.在重构我们既有的代码时,往往会用到设计模式.在之前重构系列的博客中,我们在重构时用到了“工厂模式”.“策略模式”.“状态模式”等.当然在重构时,有的地 ...
- 设计模式 - 策略模式(Strategy Pattern) 具体解释
策略模式(Strategy Pattern) 具体解释 本文地址: http://blog.csdn.net/caroline_wendy/article/details/26577879 本文版权全 ...
- HeadFirst设计模式读书笔记(1)-策略模式(Strategy Pattern)
策略模式(Strategy Pattern): 定义了了算法簇,分别封装起来,让它们之间可以相互替换,此模式让算法的变化独立于使用算法的客户端. 第一个设计原则:找出应用中可能需要变化之处,把他们独立 ...
- 乐在其中设计模式(C#) - 策略模式(Strategy Pattern)
原文:乐在其中设计模式(C#) - 策略模式(Strategy Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 策略模式(Strategy Pattern) 作者:webabc ...
随机推荐
- android开发中获取<meta-data>数据
在 AndroidManifest.xml 中,<meta-data>元素是一个键值对,往往被包含在<application> .<activity>.<se ...
- 修改vb程序图标
1. 2.
- IPC----哲学家就餐问题(并发与互斥)
哲学家就餐问题描述: 5个哲学家,5个筷子.5个哲学家围坐在一张桌子上,筷子放在分别放在每个哲学家的两旁.如果所有哲学家在某个时刻同时拿起左边的筷子,那么右边的筷子就都被其他的哲学家拿了,造成大家都无 ...
- ASP.NET页面传值不使用QueryString
ASP.NET页面传值不使用QueryString Asp.net中的页面传值方法: 1 Url传值 特点:主要优点是实现起来非常简单,然而它的缺点是传递的值是会显示在浏览器的地址 ...
- ios 中NSDateFormater中的特殊字符
今天要把一个字符串转化为日期格式,这个字符串是服务器传过来的,如下: 2015-02-28T14:40:15 我开始使用这个格式来转化 yyyy-MM-ddThh:mm:ss ,一直返回nil,原来 ...
- jira与mysql的配合搭建调整
jira与mysql数据的整合 第一步:电脑上安装mysql数据库,不做多得解释,自己搞定 第二步: 在mysql数据库中建一个名为 jiradb的数据库,账号 root 密码 root 编码格式 u ...
- jQuery中attr()方法用法实例
本文实例讲述了jQuery中attr()方法用法.分享给大家供大家参考.具体分析如下: 此方法设置或返回匹配元素的属性值. attr()方法根据参数的不同,功能也不同. 语法结构一: 获取第一个匹配元 ...
- 【编程题目】在 O(1)时间内删除链表结点
60.在 O(1)时间内删除链表结点(链表.算法).题目:给定链表的头指针和一个结点指针,在 O(1)时间删除该结点.链表结点的定义如下:struct ListNode{int m_nKey;List ...
- jquery中dom元素的attr和prop方法的理解
一.背景 在编写使用高版本[ jQuery 1.6 开始新增了一个方法 prop()]的jquery插件进行编写js代码的时候,经常不知道dom元素的attr和prop方法到底有什么区别?各自有什么应 ...
- [Android Pro] APK
svn updatesvn status ls -alsvn log --limit 8 > RELEASE_NOTE.txt cat RELEASE_NOTE.txt chmod a+x gr ...