标签:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
/*
策略模式
*/
namespace App_MYCS.HDL_SJMS.CLMS
{
//调用
public class my_clms_dy
{
public void dy()
{
//需要知道哪个对像再放进去
my_CLMS clms;
clms = new my_CLMS(new class_sxl_1());
clms.dy_appfunction();
clms = new my_CLMS(new class_sxl_2());
clms.dy_appfunction();
}
public void dy2()
{
//改造后,更简要,外部只要知道一个类就可以了 转不同的参数有不同的结果
//对外变成字符串
my_clms2 clms2;
clms2 = new my_clms2("1");
clms2.dy_appfunction();
clms2 = new my_clms2("2");
clms2.dy_appfunction();
}
}
//策略中间类 (对外的就只有策略对象 )
public class my_CLMS
{
class_cxl cxl;
public my_CLMS(class_cxl cxlx)//策略对象
{
this.cxl = cxlx;
}
public void dy_appfunction()
{
//根据对象不同,调用不同的对象实现方法
cxl.appfunction();
}
}
//抽像类
public abstract class class_cxl
{
//抽像方法
public abstract void appfunction();
}
public class class_sxl_1 : class_cxl
{
//实现抽像类
public override void appfunction()
{
Console.WriteLine("实现方式1");
}
}
public class class_sxl_2 : class_cxl
{
//实现抽像类
public override void appfunction()
{
Console.WriteLine("实现方式2");
}
}
//-------------------------------------------------------
//进一步的改造策略中间类
public class my_clms2
{
class_cxl cxl;
public my_clms2(string typestr)//策略对象
{
switch (typestr)
{
case "1":
class_sxl_1 sxl1 = new class_sxl_1();
cxl = sxl1;
break;
case "2":
class_sxl_2 sxl2 = new class_sxl_2();
cxl = sxl2;
break;
default:
break;
}
}
public void dy_appfunction()
{
//根据对象不同,调用不同的对象实现方法
cxl.appfunction();
}
}
}
标签:
原文地址:http://www.cnblogs.com/longkai178/p/5815092.html