设计模式 – 软件中使用的设计模式的一些现实例子

我现在正在阅读头部设计模式,虽然本书非常出色,但我也想看看它们在现实世界中是如何实际使用的.

如果您知道设计模式使用的一个很好的例子(最好是在OSS程序中,所以我们可以看一下:),请在下面列出.

最佳答案
对于我来说,观察者模式的一个例子就是要意识到它与事件的紧密联系.考虑一个需要在两个表单之间进行松散通信的Windows程序.这可以通过观察者模式轻松完成.

下面的代码显示了Form2如何触发事件以及注册为观察者的任何其他类获取其数据.

请参阅此链接以获取出色的模式资源:
http://sourcemaking.com/design-patterns-and-tips

Form1的代码:

namespace PublishSubscribe
{
    public partial class Form1 : Form
    {
        Form2 f2 = new Form2();

        public Form1()
        {
            InitializeComponent();

            f2.PublishData += new PublishDataEventHander( DataReceived );
            f2.Show();
        }

        private void DataReceived( object sender, Form2EventArgs e )
        {
            MessageBox.Show( e.OtherData );            
        }
    }
}

Form2的代码

namespace PublishSubscribe
{

    public delegate void PublishDataEventHander( object sender, Form2EventArgs e );

    public partial class Form2 : Form
    {
        public event PublishDataEventHander PublishData;

        public Form2()
        {
            InitializeComponent();
        }

        private void button1_Click( object sender, EventArgs e )
        {
            PublishData( this, new Form2EventArgs( "data from form2" ) );    
        }
    }

    public class Form2EventArgs : System.EventArgs
    {
        public string OtherData;

        public Form2EventArgs( string OtherData )        
        {
            this.OtherData = OtherData;
        }
    }
}

转载注明原文:设计模式 – 软件中使用的设计模式的一些现实例子 - 代码日志