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

做自己的网站给人的启发网络推广工作任务和职业能力

做自己的网站给人的启发,网络推广工作任务和职业能力,中山软件开发公司,做视频网站的技能曾经.NET面试过程中经常问的一个问题是#xff0c;如果程序集A#xff0c;引用B #xff0c;B 引用C#xff0c;那么C怎么去访问A中的方法呢。 这个问题初学.net可能一时想不出该咋处理#xff0c;这涉及到循环引用问题。但有点经验的可能就简单了#xff0c;通过委托的方…曾经.NET面试过程中经常问的一个问题是如果程序集A引用B B 引用C那么C怎么去访问A中的方法呢。 这个问题初学.net可能一时想不出该咋处理这涉及到循环引用问题。但有点经验的可能就简单了通过委托的方式从A中传递到C中然后在C中就可以访问了。还有通过接口方式也可以。 但是如果项目中有非常多的程序集 A B C D E F G 而且互相都有交叉的访问关系任何两者都有可能访问那么如果用接口和委托可能就不是那么方便了。   消息模式不仅仅可以完美解决上述问题还可以使得所有交互都集中处理使用更方便。 最近开发的一个系统涉及到诸多数据处理以及控制层而且之间大都存在循环访问的问题如果不用消息模式系统将变得非常难于维护。 系统有如下几层UI层指令层数据层算法层状态层。  UI层需要通知指令层参数变更等。指令层需要通知UI层发出买入卖出操作并且更改UI显示。 状态层状态改变后需要通知UI层显示变更指令层访问算法层指令层执行算法发现满足条件时通知状态层变更。状态层状态变更后通知指令层状态变更正常或者异常。然后进一步后续操作 还有自定义控件需要访问Form中的方法以及给form发送通知都是通过发送消息的方式来实现的。   项目结构以及数据控制流图如下数据控制流只标记了部分实际流更多          消息中心 主要包括两个静态方法一个公共事件这里负责系统中所有的事件订阅以及事件触发的枢纽 namespace Common {/// summary/// 消息事件参数/// /summarypublic class MessageArg : EventArgs{/// summary/// 消息类型/// /summarypublic EnumMsgtype mstType { set; get; }public string gpCode { set; get; }public string message { set; get; }/// summary/// 扩展数据/// /summarypublic object ExtendData { set; get; }}public class MessageCenter{ public static MessageCenter Instanse null;static MessageCenter(){Instanse new MessageCenter();}public delegate void MessageHandle(Object sender, MessageArg e);/// summary/// 消息事件/// /summarypublic event MessageHandle OnMessage;/// summary/// 发送事件后续添加的发现消息模式的诸多便利/// /summary/// param namegpCode/param/// param nameeventType/param/// param nameextendData/parampublic static void SendEvent(string gpCode,EnumMsgtype eventType, object extendData){if(MessageCenter.Instanse.OnMessage!null){try{MessageCenter.Instanse.OnMessage(MessageCenter.Instanse, new MessageArg() { mstType eventType, gpCode gpCode, ExtendData extendData });}catch(Exception ex){ShowExceptionMsg(ex, gpCode);}} }/// summary/// 提示信息一开始设计仅仅是想发送消息/// /summary/// param namemstType/param/// param namegpCode/param/// param namemessage/parampublic static void ShowMessage(EnumMsgtype mstType, string gpCode, string message){if (MessageCenter.Instanse.OnMessage ! null){MessageCenter.Instanse.OnMessage(MessageCenter.Instanse, new MessageArg() { mstType mstType, gpCode gpCode, message message });}}/// summary/// 发送异常信息/// /summary/// param nameex/param/// param namegpCode/parampublic static void ShowExceptionMsg(Exception ex, string gpCode){EnumMsgtype msgType;string msg ;if (ex is ApplicationException){msgType EnumMsgtype.ImportantInfo;msg ex.Message;}else{msgType EnumMsgtype.SysError;msg ex.ToString();}ShowMessage(msgType, gpCode, msg);}} }     指令中心 发送通知举例 MessageCenter.SendEvent(singleStatus.GpCode, EnumMsgtype.ManageBeforeChangeEvent, singleStatus);//触发操作前事件MessageCenter.SendEvent(singleStatus.GpCode, EnumMsgtype.ManageChangeEvent, singleStatus);//触发操作后事件 private void SetGpBuy(PriceTimeModel gpRealTimeData, GpStatusManage gpStatus){//所有需要买的状态项ListGpStatusBase lstBuyStatus gpStatus.AllNeedBuyStatus;//依次进行验证操作foreach (var singleStatus in lstBuyStatus){//设置状态的最后一个股票信息singleStatus.LasterOpraPriceItem gpRealTimeData;//获取股票算法ManageRuleBase saleRule ManageRuleBase.GetRule(gpStatus.GpParameterItem.LogicType);saleRule.PriceChange(gpRealTimeData, singleStatus); bool isCanBuy CheckCanBuy(gpRealTimeData, singleStatus, saleRule);if (isCanBuy){MessageCenter.SendEvent(singleStatus.GpCode, EnumMsgtype.ManageBeforeChangeEvent, singleStatus);//紧急暂停if (IsStopBuy || singleStatus.GpItem.IsStopBuy){MessageCenter.ShowMessage(EnumMsgtype.StatusInfo, singleStatus.GpCode, gpRealTimeData.GetGpcodeAndTimeStr() singleStatus.ManageTypeName 紧急暂停取消买操作);continue;}//的判断是上面这个事件可能会更改状态if (singleStatus.CanManage false || singleStatus.ManageCnt0){MessageCenter.ShowMessage(EnumMsgtype.StatusInfo, singleStatus.GpCode, gpRealTimeData.GetGpcodeAndTimeStr() singleStatus.ManageTypeName 数量不足取消买操作);continue;}//发出买指令(锁定价格买)var para new ManageParameter(){GpCode singleStatus.GpItem.GpCode,InstructWay EnumInstruct.Buy,ManagePrice singleStatus.LockPrice gpStatus.GpItem.ChangePersontToPrice(0.2f),//加上0.3百分点增加买入成功率 //0322还是更改锁定价格0.2fManageCnt singleStatus.ManageCnt,PriceItem gpRealTimeData,GpItem singleStatus.GpItem};//外挂操作if (waiguaOprationer.GpManage(para)){float managePrice gpRealTimeData.Price gpStatus.GpItem.ChangePersontToPrice(0.2f);singleStatus.ManagePrice float.Parse(managePrice.ToString(f2));singleStatus.ManagePriceItem gpRealTimeData;//买入更改状态singleStatus.SetGpStatusAfterEvent(EnumOprationStatus.Buyed);lstNeedCheckStatus.Add(singleStatus);//通知MessageCenter.ShowMessage(EnumMsgtype.StatusInfo, gpStatus.GpCode, gpRealTimeData.GetGpcodeAndTimeStr() singleStatus.ManageTypeName 买入操作成功,待验证\r\n);//操作变更事件MessageCenter.SendEvent(singleStatus.GpCode, EnumMsgtype.ManageChangeEvent, singleStatus);}}}}   UI接收消息举例 订阅消息 MessageCenter.Instanse.OnMessage Instanse_OnMessage; 对不同的消息类型分别处理 private void Instanse_OnMessage(object sender, MessageArg e){try{if (GpItem ! null e.gpCode ){//清空if (e.mstType EnumMsgtype.ClearDataEvent){this.lstOnePara.ForEach(t {t.SingleStatus null;t.ReinitStepStyle();});}}if (GpItem ! null e.gpCode GpItem.GpCode){//如果不在Form控制下那么取消事件注册var parFrm FindParentForm();if (parFrm null){//这里通常是由于导入了参数导致的额外注册MessageCenter.Instanse.OnMessage - Instanse_OnMessage;return;}if (e.mstType EnumMsgtype.PriceChangeEvent){//}//消息else if (e.mstType EnumMsgtype.Info || e.mstType EnumMsgtype.ImportantInfo || e.mstType EnumMsgtype.StatusInfo){//}else if (e.mstType EnumMsgtype.ManageBeforeChangeEvent)//操作之前事件{//}else if (e.mstType EnumMsgtype.ManageChangeEvent)//操作之后事件{//}else if (e.mstType EnumMsgtype.AutoLockChangeEvent)//智能锁定{//}else if(e.mstType EnumMsgtype.MonitStartEvent){//} }}catch(Exception ex){MessageCenter.ShowExceptionMsg(ex, GpItem.GpCode);}}   文中的举例的软件以及下载地址在我另外一博文中介绍 http://www.cnblogs.com/blackvis/p/5779443.html   总结消息模式的几大优点 1 解决程序集循环访问的问题 2 程序集解耦对于少量通信的程序集之间不需要存在引用关系就可达到互相通讯亦可减少程序集中的public方法数量。 3 消息以广播的形式进行发送使得一处发送多处重复使用。 4 消息集中处理控制更加灵活。  转载于:https://www.cnblogs.com/blackvis/p/5782288.html
http://www.pierceye.com/news/118895/

相关文章:

  • 内设网站wordpress 注册验证
  • 全景网站建设做米业的企业网站
  • 珠海哪个建设网站建设好ui网站界面设计
  • 中国有名的模版网站电商建设网站
  • 网站改域名合肥网站建设企业
  • 建网站需要软件c 怎么做能让窗体访问网站
  • 呼家楼网站建设黄骅市官方网站
  • 空包网站分站怎么做手表网站哪个最好知乎
  • 手机商城建站系统网站建设有关建筑网站建设方案
  • 做网站需要具备的基础条件wordpress 修改后台
  • 网站做点击收费标准重庆建设工业集团
  • wordpress个人网站备案管理广州网站搭建费用
  • 英文网站建设的原因泰安房产信息网网签查询
  • 怎么将网站做成html如何寻找一批做网站的公司
  • 苏州网站建设孙峰南宁站建站时间
  • 海淀手机网站设计公司苏州建设工程有限公司
  • 兰州网站设计制作王妃貌美还狠凶
  • 做新闻微网站有哪些淘宝优惠劵做网站模版
  • 网站维护的意义百度一下官网首页百度
  • 我是做网站怎么赚钱外贸网站google推广
  • 无锡网站seo报价软件开发模型是对软件开发过程的一种规范描述
  • 暴利产品竞价单页网站微信电商小程序开发公司
  • 网站中的搜索功能怎么做怎样在网站做友情链接
  • 新闻单位建设网站的意义怎么和其它网站做友情链接
  • 做哪类网站没有版权问题帮忙做公司网站
  • 商城式网站具备哪些功能吗郑州网站设
  • 潍坊市做网站沈阳专业网站制作团队
  • 婚恋网站女孩子都是做美容西安做网站南通公司
  • 网站制作培训中心想做网站建设
  • 免费模板素材网站ppth5开源网站模板