当前位置: 首页 > news >正文

美武汉有什么网站建设公司策划营销

美武汉有什么网站建设公司,策划营销,如何制作应用软件,php企业门户网站模板我们首先回故下Builder模式的意图: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。[DP]那我们C#中switch语句块,从一个层面上来看,就是由几部分组成的,我们来实现一个SwitchB…

     我们首先回故下Builder模式的意图: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。[DP]
那我们C#中switch语句块,从一个层面上来看,就是由几部分组成的,我们来实现一个SwitchBuilder类具有这种功能.那什么
是Fluent接口,可以先看这儿wiki.

     有的时候我们需要Enum类型处理复杂的类型,有一个描述字段,或还有更多其它的字段信息.我们创建一个使用static readonly
字段的类,看下面这是一个典型的实现:

  /// <summary>/// EnumType/// </summary>/// <remarks>http://wintersun.cnblogs.com</remarks>public class EnumType{public static readonly EnumType ONE = new EnumType(1, "Descr1");public static readonly EnumType TWO = new EnumType(2, "Descr2");public static readonly EnumType THREE = new EnumType(3, "Descr3");private readonly int id;private readonly string description;private EnumType(int id, string description){this.description = description;this.id = id;}public int Id{get { return id; }}public string Description{get { return description; }}#region Object's overridepublic override bool Equals(object obj){if (ReferenceEquals(null, obj)){return false;}if (ReferenceEquals(this, obj)){return true;}return obj.GetType() != typeof (EnumType) && ((EnumType) obj).Id == Id;}public override int GetHashCode(){return id.GetHashCode();}public override string ToString(){return string.Format("id:<{0}> and Descr:<{1}>", Id, Description);}
 
public interface IDo
{void Do();
}public interface IBody : IDo
{ICase Case(object obj);IDefault Default { get; }
}public interface ICase
{ICase Case(object obj);IBody Body(Action action);
}public interface IDefault
{IDo Body(Action action);
}public interface ISwitch
{ICase Switch(object obj);
}

再我们的具体类:

public class SwitchBuilder : ISwitch, IDefault, ICase, IBody
{private Action defaultAction;private object testObject;private IList<object> caseList;private readonly IDictionary<object, Action> caseActions = new Dictionary<object, Action>();private SwitchBuilder() {}public static ISwitch Create(){return new SwitchBuilder();}public ICase Switch(object obj){caseList = new List<object>();testObject = obj;return this;}public ICase Case(object obj){caseList.Add(obj);return this;}public IBody Body(Action action){foreach (var switchCase in caseList){caseActions.Add(switchCase, action);}caseList = new List<object>();return this;}public IDefault Default{get { return this; }}IDo IDefault.Body(Action action){defaultAction = action;return this;}public void Do(){foreach (KeyValuePair<object, Action> caseAction in caseActions){if (ReferenceEquals(caseAction.Key, testObject) || Equals(caseAction.Key, testObject)){caseAction.Value();return;}}if (defaultAction != null){defaultAction();}}
}

如何使用呢?看这个UnitTest

[Test]
public void CanCreateFluentSwitchBuilder()
{EnumType state = null;EnumType enumType = EnumType.THREE;SwitchBuilder.Create().Switch(enumType).Case(EnumType.ONE).Body(() =>{Console.WriteLine(EnumType.ONE);state = EnumType.ONE;}).Case(EnumType.TWO).Case(EnumType.THREE).Body(() =>{Console.WriteLine("->" + EnumType.TWO + EnumType.THREE);state = EnumType.TWO;}).Default.Body(() => Console.WriteLine("Def")).Do();Assert.AreEqual(state, EnumType.TWO);
}
那些接口的一个作用在于,保证我们的SwitchBuilder使用时,要先Create然后Switch…最后do.
结论
  Builder模式与Fluent接口在很多种场景下并不是那么简单的API,有时还需要简单的验证.还有其它方式实现
Fluent接口模式,例如使用嵌套类.
 
Author: Petter Liu   http://wintersun.cnblogs.com 
Reference: source
 
http://www.lbrq.cn/news/2599471.html

相关文章:

  • 开发公司 张庆网站建设排名优化
  • 电脑版和手机版网站怎么做企业网站建设需求分析
  • 长沙岳麓区做网站郴州网络推广公司排名
  • wordpress+爱情主题公园seo排名分析
  • 做网站需要先买域名吗seo有哪些经典的案例
  • seo整站优化公司100%能上热门的文案
  • 深圳网站制作公司深圳网站制作公司seo和sem的区别是什么?
  • 外包服务属于什么行业百度网站的优化方案
  • 东莞工商注册代办公司注册沈阳seo排名收费
  • 房山青岛网站建设河南怎样做网站推广
  • 奶茶电商网站建设长沙靠谱seo优化费用
  • 网站开发需要准备什么软件网站如何优化
  • 惠州网站建设价格2022年传销最新消息
  • 介绍一个电影的网站模板企业网页设计公司
  • 沭阳做网站的公司百度广告投放技巧
  • 做团购网站有什么难处百度搜索大数据查询
  • 许昌市网站开发自动优化app
  • 太原网站建设方案策划seo内部优化具体做什么
  • 帮人做网站要怎么赚钱如何宣传推广自己的产品
  • 网站建设销售好做扬州seo博客
  • 阿里云服务器 多个网站百度网站下拉排名
  • 360度网站模板网站优化招商
  • 医院哪个科室负责网站建设客户管理系统
  • 可以做机械设计接单的网站软文推广软文营销
  • 家庭宽带做私人网站厦门seo厦门起梦
  • 世界工业设计大学排名前25seo关键词优化报价
  • 给别人做软件的网站发帖子的网站
  • 北京专业做网站推广深圳网站设计实力乐云seo
  • 做的网站很卡是什么原因广州seo排名收费
  • 宣讲家网站做四讲四有模范2023最近爆发的流感叫什么
  • Spring-rabbit使用实战六
  • Redis内存耗尽时的应对策略
  • 检索召回率优化探究四:基于LangChain0.3集成Milvu2.5向量数据库构建的智能问答系统
  • 智慧社区(六)——社区居民人脸识别功能实现详解:从腾讯 API 集成到模拟验证
  • Java ++i 与 i++ 底层原理
  • 跨语言模型中的翻译任务:XLM-RoBERTa在翻译任务中的应用