design-patterns - 软件中使用的设计模式有哪些现实生活中的例子

标签 design-patterns

关闭。这个问题不满足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/

相关文章:

c++ - 此工厂功能有什么问题?

c++ - 基于策略的设计C++问题

php - Laravel 存储库模式契约

haskell - 为什么有一个单独的类型模块?

java - 将枚举类与策略模式相结合进行模块化设计

c# - 通过 C# 中的方法强制添加到集合的模式

java - 计算机和人类玩家简单游戏中玩家模型的设计

java - 简单的java消息调度系统

java - 如何减少复合/装饰模式中的样板代码

c# - unity 或 unity.mvc4 用于 MVC4 应用程序