//代码来自大话设计模式(并且省略了一部分)
// 注释是为个人见解 // 交钱接口 public interface Ijiaoqian { double acceptCash( double money); } // 普通缴费 class Normal : Ijiaoqian { public double acceptCash( double money) { return money; } } // 打折缴费 class dazhe : Ijiaoqian { private double MoneyRebate = 1d; public dazhe( string moneyRebate) { this .MoneyRebate = double .Parse(moneyRebate); } public double acceptCash( double money) { return money * MoneyRebate; } } class strategy { private Ijiaoqian jq; // 设置策略 public void setModel(Ijiaoqian jq) { this .jq = jq; } // 调用设置后的缴费方式 public double retResult( double moneny) { return jq.acceptCash(moneny); } } class Program { static void Main( string [] args) { // 原代码把缴费选项存在一个XML文件里如下,通过数据绑定到dropdownlist // 加上反射,这样就可以只需要修改XML文件,既达到目的 // 给实例化类的构造函数参数 object [] arg = new string [] { " 0.8 " }; strategy s = new strategy(); s.setModel((Ijiaoqian)Assembly.Load( " mychengxuji " ).CreateInstance( " WhtNamespace.dazhe " , false , BindingFlags.Default, null , arg, null , null )); double d = s.retResult( 10 ); Console.WriteLine(d); Console.Read(); } } // <CashAcceptType> // <type> // <name>正常收费</name> // <class>CashNormal</class> // <para></para> // </type> // <type> // <name>满300返100</name> // <class>CashReturn</class> // <para>300,100</para> // </type> // <type> // <name>满200返50</name> // <class>CashReturn</class> // <para>200,50</para> // </type> // <type> // <name>打8折</name> // <class>CashRebate</class> // <para>0.8</para> // </type> // <type> // <name>打7折</name> // <class>CashRebate</class> // <para>0.7</para> // </type> // </CashAcceptType>
转载于:https://www.cnblogs.com/renjuwht/archive/2010/01/16/1649779.html
相关资源:各显卡算力对照表!