11/10/2019, 10:11

[C#] Hướng dẫn sử dụng thư viện Simple Broker (Observer pattern)

Xin chào các bạn, bài viết hôm nay mình sẽ giới thiệu đến các bạn thư viện Simple Broker thừa kế từ Observer pattern C# . Observer pattern là một mẫu thiết kế phần mềm mà một đối tượng, gọi là subject , duy trì một danh sách các thành phần phụ thuộc nó, gọi ...

Xin chào các bạn, bài viết hôm nay mình sẽ giới thiệu đến các bạn thư viện Simple Broker thừa kế từ Observer pattern C#.

Observer pattern là một mẫu thiết kế phần mềm mà một đối tượng, gọi là subject, duy trì một danh sách các thành phần phụ thuộc nó, gọi là observer, và thông báo tới chúng một cách tự động về bất cứ thay đổi nào, thường thì bằng cách gọi 1 hàm của chúng.

Giả sử chúng ta có một bảng tính excel với nhiều trang tính chứa các dữ liệu cần để thống kê. Ta có thể tạo ra vô số biểu đồ sử dụng dữ liệu ở các trang tính đó để hiển thị ra kết quả thống kê.

Khi ta thay đổi dữ liệu ở một trang tính, các biểu đồ có sử dụng dữ liệu đó cũng phải được cập nhật để có số liệu thống kê chính xác.

Ta có thể thấy là số lượng biểu đồ có thể dùng dữ liệu ở một trang tính là không giới hạn.

Observer_pattern_chart

Và hướng giải quyết khi sử dụng Observer pattern: trang tính ở đây đóng vai trò là subject, còn các biểu đồ chính là các observer.

Mỗi khi trang tính được cập nhật dữ liệu, ta sẽ gọi cập nhật đến các biểu đồ phụ thuộc dữ liệu với trang tính đó.

Demo ứng dụng Observer pattern C#: (Sử dụng thư viện Simple Broker)

Observer_demo_app

Source code Frm_main.cs:

using SimpleBroker;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Observer
{
    public partial class Frm_Main : Form
    {
        public Frm_Main()
        {
            InitializeComponent();
            Load += Frm_Main_Load;
            Closed += Form_Main_Closed;
        }

        private void Form_Main_Closed(object sender, EventArgs e) => this.Unsubscribe<Message>();
        private void Frm_Main_Load(object sender, EventArgs e) => this.Subscribe<Message>(OnNext);
        private void OnNext(Message value) {
            txtLog.Text = $"{value.Source}, {value.Information} {Environment.NewLine} {txtLog.Text}";
        }
        public  class Message
        {
            public string Source { get; set; }
            public string Information { get; set; }
        }

        private void btn_Dispatcher_Click(object sender, EventArgs e) => new FormSendData().Show(this);
       
      
    }
}

Source code Frm_send_data C#:

using SimpleBroker;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Observer
{
    public partial class FormSendData : Form
    {
        public FormSendData()
        {
            InitializeComponent();
        }

        private void btn_send_Click(object sender, EventArgs e)
        {
            var message = new Frm_Main.Message
            {
                Source = txt_source.Text,
                Information = txt_information.Text
            };
            message.Publish();
        }

       
    }
}

Thanks for watching!

DOWNLOAD SOURCE

Tham khảo viblo.asia

Tags: observer pattern c#
0