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

建站的目的led的网站建设

建站的目的,led的网站建设,珠海公司网站制作,wordpress博客主题模板免费一#xff1a;实际场景介绍我们在给用户做订单催付通知的时候#xff0c;会有这样的一种场景#xff0c;用户在系统后台设置一组可以催付的规则#xff0c;比如说订单金额大于xx元#xff0c;非黑名单用户#xff0c;来自哪个地区#xff0c;已购买过某个商品#xff0… 一实际场景介绍我们在给用户做订单催付通知的时候会有这样的一种场景用户在系统后台设置一组可以催付的规则比如说订单金额大于xx元非黑名单用户来自哪个地区已购买过某个商品指定某个营销活动的人等等这样的条件如果这时用户在淘宝上下了一个订单那程序要判断的就是看一下此订单是否满足这些规则中的某一个如果满足我们给他发送催付通知这种场景是很多做CRM的同学都会遇到的问题那针对这种场景如何更好的规划业务逻辑呢二普通的编程代码在这里我们就不考虑多筛选条件下的性能而只从代码维护复杂度考虑如果不清楚设计模式的同学大概会写出如下的代码 namespace ConsoleApplication1 {class Program{static void Main(string[] args){var regulars new ListRegulars();regulars.Add(new Regulars() { RegularID 1, RegularName 规则1, AnalysisConditons xxxx });regulars.Add(new Regulars() { RegularID 1, RegularName 规则2, AnalysisConditons xxxx });regulars.Add(new Regulars() { RegularID 1, RegularName 规则3, AnalysisConditons xxxx });regulars.Add(new Regulars() { RegularID 1, RegularName 规则4, AnalysisConditons xxxx });regulars.Add(new Regulars() { RegularID 1, RegularName 规则5, AnalysisConditons xxxx });var filters FilterRegularID(regulars);filters FilterRegularName(filters);filters FilterCondtions(filters);//... 后续逻辑}static ListRegulars FilterRegularID(ListRegulars persons){//过滤 “姓名” 的逻辑return null;}static ListRegulars FilterRegularName(ListRegulars persons){//过滤 “age” 的逻辑return null;}static ListRegulars FilterCondtions(ListRegulars persons){//过滤 “email” 的逻辑return null;}}/// summary/// 各种催付规则/// /summarypublic class Regulars{public int RegularID { get; set; }public string RegularName { get; set; }public string AnalysisConditons { get; set; }} } 为了演示上面的代码是从 regularidregularnamecondition 三个维度对 regulars 这个聚合对象进行AND模式的筛选过滤当过滤维度比较多的时候这种写法看的出来是简单粗暴维护起来也必须简单粗暴 所以上万行代码也就是这么出来的设计模式告诉我们一个简单的“开闭原则”那就是追求最小化的修改代码这种场景有更好的优化策略吗对应到设计模式上就是 “过滤器模式” 专门针对这种场景的解决方案一个维度一个类然后通过逻辑运算类将他们进行组合可以看出这是一种“结构式的设计模式”。三过滤器模式好了废话不多说先来看一下优化后的设计图纸如下从上面这张图纸中可以看到我已经将三个维度的过滤方法提取成了三个子类由此抽象出了一个IFilter接口当然你也可以定义成抽象类然后实现了两个运算级 AND 和 OR 子类Filter用于动态的对原子性的 RegularIDFilter,RegularNameFilterReuglarCondtionFilter 进行 AND,OR 逻辑运算下面我们再看具体代码1. IFilterpublic interface IFilter{ListRegulars Filter(ListRegulars regulars);} 2. RegularIDFilter public class RegularIDFilter : IFilter{/// summary/// Regulars的过滤逻辑/// /summary/// param nameregulars/param/// returns/returnspublic ListRegulars Filter(ListRegulars regulars){return null;}} 3.RegularNameFilter public class RegularNameFilter : IFilter{/// summary/// regularName的过滤方式/// /summary/// param nameregulars/param/// returns/returnspublic ListRegulars Filter(ListRegulars regulars){return null;}} 4. RegularCondtionFilter public class RegularCondtionFilter : IFilter{/// summary/// Condition的过滤条件/// /summary/// param nameregulars/param/// returns/returnspublic ListRegulars Filter(ListRegulars regulars){return null;}} 5. AndFilter/// summary/// filter的 And 模式/// /summarypublic class AndFilter : IFilter{ListIFilter filters new ListIFilter();public AndFilter(ListIFilter filters){this.filters filters;}public ListRegulars Filter(ListRegulars regulars){var regularlist new ListRegulars(regulars);foreach (var criteriaItem in filters){regularlist criteriaItem.Filter(regularlist);}return regularlist;}} 6. OrFilter public class OrFilter : IFilter{ListIFilter filters null;public OrFilter(ListIFilter filters){this.filters filters;}public ListRegulars Filter(ListRegulars regulars){//用hash去重var resultHash new HashSetRegulars();foreach (var filter in filters){var smallPersonList filter.Filter(regulars);foreach (var small in smallPersonList){resultHash.Add(small);}}return resultHash.ToList();}} 7. 最后我们客户端调用程序就简单了只要将“原子性”的过滤条件追加到“逻辑运算类”中就完美了如下图 class Program{static void Main(string[] args){var regulars new ListRegulars();regulars.Add(new Regulars() { RegularID 1, RegularName 规则1, AnalysisConditons xxxx });regulars.Add(new Regulars() { RegularID 1, RegularName 规则2, AnalysisConditons xxxx });regulars.Add(new Regulars() { RegularID 1, RegularName 规则3, AnalysisConditons xxxx });regulars.Add(new Regulars() { RegularID 1, RegularName 规则4, AnalysisConditons xxxx });regulars.Add(new Regulars() { RegularID 1, RegularName 规则5, AnalysisConditons xxxx });//追加filter条件var filterList new IFilter[3] {new RegularIDFilter(),new RegularNameFilter(),new RegularCondtionFilter()};var andCriteria new AndFilter(filterList.ToList());//进行 And组合 过滤andCriteria.Filter(regulars);}} 当你仔细看完上面的代码会不会发现如果后续有需求变更比如说增加筛选的维度我只需要新增一个继承 IFilter 的子类就搞定了客户端在调用的时候只要在Filters集合中追加该筛选维度是不是就OK了所以这种模式几乎达到了无代码修改的地步~~~好了本篇就说到了这里希望对你有帮助~
http://www.pierceye.com/news/418117/

相关文章:

  • 网站开发filter北京互联网
  • 德州市市政工程建设总公司网站设计公司的运营模式
  • 网站源码怎么弄境外注册网站
  • 肥城网站建设视频解析接口网站怎么做
  • 深圳做互联网教网站公司五百亿网站建设
  • 如何建自己网站周口网站建设费用
  • 延安网站建设哪家专业网站建设的大功效
  • 做网站交互demo工具服务器中安装wordpress
  • 2017年网站建设市场分析2345浏览器官网网址
  • 超大型网站建设怎么打广告吸引客户
  • 阳泉 网站建设合作国际网站设计
  • 东莞网站优化快速排名wordpress自适应设置宽度
  • wordpress的站点地址怎么设置青岛seo网站建设
  • wordpress 获取文章标签泰安企业网站seo
  • 网站可分为哪两种类型jsp网站建设项目实战 pdf
  • 科技类网站简介怎么做网站建设公司的工资
  • 东莞网站推广怎么做网站备案和备案的区别
  • 免费的舆情网站app开放平台设计方案
  • 昆明驿站网站建设程序做网站好还是app好
  • 提供网站推广公司电话室内设计好不好学
  • 小型网站网站建设需要做网页的素材网站
  • 圣诞节网站模板大兴企业官网网站建设
  • 法国化妆品进口报关做网站贵州两学一做网站
  • 青海环保网站建设公司wordpress版权怎
  • 砀山网站建设大凤号 网站建设
  • 汕头站什么是网站优化主要包括那几个
  • 买了一个域名如何做网站做歌手的网站
  • 制作精美网站建设服务周到外贸没有公司 如何做企业网站
  • jsp手机销售网站的建设做网站的收钱不管了
  • 购物分享网站流量排名帮忙做ppt的网站