• 行为型设计模式之-观察者模式


    观察者模式定义:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。

    我反正是不太理解定义的意思!这样讲,事件是最优雅的观察者模式。知道事件是解决什么问题的,观察者也一样。就是外部定义注册流程逻辑。里面触发流程。

    上代码:

      /// <summary>
        /// 观察者模式
        /// </summary>
        public class ObserverPattern
        {
         //发布
    private List<IHandler> handlerList = new List<IHandler>(); /// <summary> /// 注册流程 /// </summary> /// <param name="handler"></param> public void AddHandler(IHandler handler) { handlerList.Add(handler); } //这里触发流程 public void MyHandler() { Console.WriteLine("这里执行其他程序"); if (handlerList.Count > 0) { foreach (var handler in handlerList) { handler.Pipeline(); } } } } public interface IHandler { /// <summary> /// 这里随便约束,你想约束啥方法都可以。 /// </summary> void Pipeline(); } public class SchoolHandler : IHandler { public void Pipeline() { Console.WriteLine("学校处理程序"); } } public class GovernmentHandler : IHandler { public void Pipeline() { Console.WriteLine("政府处理程序"); } } public class WorkshopSchoolHandler : IHandler { public void Pipeline() { Console.WriteLine("厂房处理程序"); } } public class FarmingHandler : IHandler { public void Pipeline() { Console.WriteLine("种田处理程序"); } }

    调用端:

      public class Program
        {
            /// <summary>
            /// 调用端
            /// </summary>
            /// <param name="args"></param>
            public static void Main(int[] args)
            {
                ObserverPattern observerPattern = new ObserverPattern();
                //注册
                observerPattern.AddHandler(new SchoolHandler());
                //注册
                observerPattern.AddHandler(new GovernmentHandler());
                //注册
                observerPattern.AddHandler(new WorkshopSchoolHandler());
                //注册
                observerPattern.AddHandler(new FarmingHandler());
                //触发
                observerPattern.MyHandler();
            }
        }

    事件解决什么问题,观察者就解决什么问题。一回事。就是让订阅者订阅。发布者触发。订阅流程外部自己控制。

    总结:还是那句话。行为型设计模式关注的是类和行为的。行为就是方法呗。再怎么折腾也是折腾这个方法抽象化。这样才好扩展。抽象这个方法就可以折腾接口和抽象类了。这个模式很简单

    本文来自博客园,作者:小换哥,转载请注明原文链接:https://www.cnblogs.com/haunge/p/15039281.html

  • 相关阅读:
    Android 中文 SDK (47) —— Filter
    Android 中文API (65) —— BluetoothClass[蓝牙]
    Android 中文 API——android.widget合集(中)(50篇)(chm格式)
    android 中文 api (72) —— BluetoothSocket[蓝牙]
    Android 中文API (61) —— ViewSwitcher
    Android API 中文 (51) —— ZoomButtonsController
    Android API 中文 (55) —— ListAdapter
    Android SDK 中文 (56) —— ViewFlipper
    什么是 COM编程技术?
    怎么打出全角的小写英文字母?
  • 原文地址:https://www.cnblogs.com/haunge/p/15039281.html
Copyright © 2020-2023  润新知