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

网站如何paypal支付wordpress媒体

网站如何paypal支付,wordpress媒体,设计网站的流程,wordpress主题怎么删除观察者模式这里面综合了几本书的资料.需求有这么个项目: 需求是这样的:一个气象站, 有三个传感器(温度, 湿度, 气压), 有一个WeatherData对象, 它能从气象站获得这三个数据. 还有三种设备, 可以按要求展示气象站的最新数据.WeatherData的结构如下:有3个get方法, 分别获取最新的… 观察者模式这里面综合了几本书的资料.需求有这么个项目: 需求是这样的:一个气象站, 有三个传感器(温度, 湿度, 气压), 有一个WeatherData对象, 它能从气象站获得这三个数据. 还有三种设备, 可以按要求展示气象站的最新数据.WeatherData的结构如下:有3个get方法, 分别获取最新的气温, 湿度和气压. 还有一个measurementsChanged()方法, 当任一传感器有变化的时候, 这个方法都会被调用.总结一下项目的需求:WeatherData类有三个get方法可以获取温度, 湿度和气压如果任何一个数据发生变化, 那么measureChanged()方法就会被调用我们需要实现这三种显示设备:  当前天气  数据统计  天气预测系统必须可以扩展, 其他开发者可以创建自定义展示设备.初版代码这个地方有个错误, xxxDisplay都是具体的实现, 而编程规则要求是应该对接口编程而不是对实现编程.那么什么是观察者模式?举一个例子:报社发行报纸你订阅报纸, 一旦有新一期的报纸发行, 新报纸就会送到你家里, 只要你一直订阅, 你就一直会收到新报纸你不再订阅报纸的时候, 就收不到以后的新报纸了报社运营的时候, 一直会有人去订阅或者取消订阅报纸.发布者 订阅者 观察者模式Publishers Subscribers Observer Pattern在观察者模式里, 我们把报社叫做被观察对象(Subject), 把订阅者叫做观察者(Observers)观察者模式是这样操作的:  观察者模式的定义就是:一个目标物件管理所有相依于它的观察者物件并且在它本身的状态改变时主动发出通知。类图如下: 谈一下松耦合当两个对象是松耦合的时候, 他们可以进行交互, 但是却几乎不了解对方.观察者模式下的被观察者(Subject)和观察者(Observers)就是松耦合设计的对象. 这是因为:被观察者(Subject)只知道观察者实现了某个接口可以随时添加观察者添加新类型观察者的时候不需要修改被观察者可以复用观察者或者被观察者如果被观察者或观察者发生变化了, 那么这些变化不会影响到对方.一个设计原则:交互的对象之间应尽量设计成松耦合的. Strive for loosely coupled designs between objects that interact.松耦合设计可以让我们设计出这样的系统: 因为对象之间的相互依存减小了, 所以系统可以轻松处理变化.重新设计:代码:OK, 上面是书中的内容, C#7.0里面对观察者模式是怎么实现的呢?先只谈下面这个:Event谈到Event, 就得把delegate先细说一下Delegate 委托一个委托类型定义了某种类型的方法(方法的返回类型和参数类型), 然后这个委托的实例可以调用这些方法.例如:delegate int Transformer (int x);这个委托就和返回类型是int, 参数是一个int的方法兼容.例如:static int Square (int x) { return x * x };// 或static int Square (int x) x * x; 把一个方法赋值给委托变量的时候就创建了一个委托的实例:Transformer t Square; 然后就可以像方法一样进行调用:int answer t(3); // 9 所以说一个委托的实例就是调用者的委托: 调用者调用委托, 然后委托调用目标方法, 这样就把调用者和目标方法解耦了.其中:Transformer t Square;// 是下面的简写Transformer t new Transformer(Square); t(3)// 是下面的简写t.Invoke(3) 多播委托一个委托实例可以引用多个目标方法. 使用操作符.SomeDelegate d Method1; d Method2;// 第二行相当于:d d Method2; 调用d的时候就会调用Method1和Method2两个方法.委托方法的调用顺序和它们被添加的顺序是一样的.使用-操作符来移除目标方法:d - Method1; 这时调用d后只会执行Method2了.注意: 委托是不可变的 /-实际上是创建了新的委托.多播委托返回类型如果多播委托有返回值(非void), 那么调用者只会获得最后一个被调用方法的返回值.委托也可以使用泛型:public delegate T TransformerT (T arg); Func 和 Action记住Func有返回值, Action没有就行. Event使用委托的时候, 通常会有两个角色出现: 广播者(被观察者)和订阅者(观察者) [观察者模式]广播者包含一个委托field, 广播者决定何时广播, 它通过调用委托进行广播.订阅者就是方法的目标接收者.订阅者可以决定何时开始和结束监听, 是通过在广播者的委托上使用和-操作符来实现的.订阅者之间互相不了解, 不干扰.event就是为上述模型所存在的, 它只把上述模型所必须的功能从委托里暴露出来. 它的主要目的就是防止订阅者之间相互干扰.最简单声明event的方法就是在委托成员前面加上event关键字:public delegate void SomeChangedHandler(decimal x);public class Broadcaster{    public event SomeChangedHandler handler;}在Broadcaster类里面的代码, 可以把handler作为委托一样来用.在Broadcaster类外边, 只能对这个event执行和-操作. Event 模式/ 观察者模式这种模式在.net core里首先需要EventArgs.EventArgs是一个基类, 它可以为event传递信息.可以创造它的子类来传递自定义参数:public class FallsIllEventArgs : EventArgs    {        public readonly string Address;        public FallsIllEventArgs(string address)        {            this.Address address;        }    }然后就需要给这个event定义一个委托了, 这有三条规则:返回类型必须是void需要有两个参数, 第一个是object, 第二个是EventArgs的子类. 第一个参数代表着广播者, 第二个参数包含额外的需要传递的信息.名称必须以EventHandler结束..net core定义了System.EventHandler, 它满足这些要求.public event EventHandlerFallsIllEventArgs FallsIll; 最后, 需要写一个 protected virtual 方法可以触发event. 方法的名称必须和event匹配: 以On开头, 接受EventArgs类型的参数: public void OnFallsIll(){FallsIll?.Invoke(this, new FallsIllEventArgs(China Beijing));} 注意: 预定义的非泛型的EventHandler委托可以在没有数据需要传输的时候使用, 调用的时候可以使用EventArgs.Empty来避免不必要的初始化EventArgs. 用.net core 实现观察者模式的代码:Person.csusing System;namespace ObserverPattern{    public class Person    {        public event EventHandlerFallsIllEventArgs FallsIll;        public void OnFallsIll()        {            FallsIll?.Invoke(this, new FallsIllEventArgs(China Beijing));        }    }}FallsIllEventArgs.cs:using System;namespace ObserverPattern{    public class FallsIllEventArgs : EventArgs    {        public readonly string Address;        public FallsIllEventArgs(string address)        {            this.Address address;        }    }}Program.cs:using System;namespace ObserverPattern{    class Program    {        static void Main(string[] args)        {            var person new Person();            person.FallsIll OnFallsIll;            person.OnFallsIll();            person.FallsIll - OnFallsIll;        }        private static void OnFallsIll(object sender, FallsIllEventArgs eventArgs)        {            Console.WriteLine($A doctor has been called to {eventArgs.Address});        }    }}原文地址 https://www.cnblogs.com/cgzl/p/8688476.html.NET社区新闻深度好文欢迎访问公众号文章汇总 http://www.csharpkit.com
http://www.yutouwan.com/news/172920/

相关文章:

  • 做哪类网站比较赚钱wordpress 调用二级分类
  • 佛山网站建设开发团队十大微商推广平台
  • 郑州模板网站制作工程造价信息月刊
  • 网站页脚需要放什么用那个程序做网站收录好
  • 中国建设部官方网站鲁班奖公司网站程序
  • 营销网站域名设计网上智慧团建网站
  • 天猫网站做链接怎么做深圳网站建设哪家好
  • 如何做淘宝联盟网站的推广seo网页的基础知识
  • 网站开发工程师题南城网站建设公司策划
  • 自己做的网站上出现乱码怎么修改建设网站怎样赚钱
  • 聊城手机网站建设多少钱一般网站宽度
  • 免费自动建站国内网站免费服务器
  • 做网站能用微软住房和建设部执业资格注册中心网站
  • 小型网站建设公司wordpress 仿小米主题下载
  • 网站建设人员需求分析有哪些专门做减肥内容的网站
  • 天津网站建设 Wordpress毕设做网站些什么比较简单
  • 台州知名的网站建设outlook企业邮箱怎么申请
  • 星月教你做网站回顾文档windows 2003建设网站
  • 公司门户网站怎么做协会网站建设方案
  • 网站推广哪个平台好手机版文章网站源码
  • 无锡市住房和城乡建设局网站县级网站建设
  • 三网合一网站怎么做一个新手怎么做电商运营
  • 南通网站建设招聘微信网站链接网站建设
  • 合肥建设集团信息网站徐州睢宁建设网站
  • 网站一跳率惠州模板做网站
  • .net网站项目有哪些怎么制作网站记事本
  • 网站快速优化排名排名wordpress图集功能
  • 艺术设计专业灵感推荐网站成都网站网站建设
  • 网站建设一条龙服务网站建设中的注册和登录页面
  • 南京企业网站开发wordpress主题安装路径