关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。
想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。
5年前关闭。
Improve this question
我目前正在阅读头先设计模式,虽然这本书很棒,但我也想看看这些在现实世界中是如何实际使用的。
如果您知道设计模式使用的一个很好的例子(最好在 OSS 程序中,以便我们可以看看:) 那么请在下面列出它。
最佳答案
对我来说,观察者模式的一个 ah-ha 时刻是意识到它与事件有多么密切的关联。考虑一个需要在两种形式之间实现松散通信的 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;
}
}
}
关于design-patterns - 软件中使用的设计模式有哪些现实生活中的例子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36129/