码迷,mamicode.com
首页 > 其他好文 > 详细

策略模式

时间:2016-08-28 16:10:26      阅读:117      评论:0      收藏:0      [点我收藏+]

标签:

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!