【问题标题】:What design-pattern do you use, and what is it good for? [closed]你使用什么设计模式,它有什么用? [关闭]
【发布时间】:2011-05-22 11:58:00
【问题描述】:

我知道Gang of Four 及其一些模式,例如FaçadeFactorySingleton 和其他一些模式。

此外,我碰巧看到了多种我不知道的模式,既不是它们的好处,也不是它们的目的。

我想了解您所知道的设计模式。非常感谢您提供解释其用途的代码示例,以及何时将其准确地用于其他模式。

请,每个答案只有一个模式,每个模式一个示例。

看看你想分享的模式是否已经讨论过了。如果没有,请随时与社区分享! =)

【问题讨论】:

  • 对于任何可以编辑我的帖子的人,请将其设为社区 Wiki。尽管我已经提出了其他问题社区 wiki,但我似乎没有复选框。
  • 每个设计模式有一个问题不是更好吗?这样最好的例子就可以被投票给顶部和/或被接受。
  • @Thomas Langston:当然!虽然这会非常,我的意思是,非常有趣,但我不知道所有的设计模式,所以我想先介绍一下。然后我会考虑你的提议,以便获得更好的想法,我想。这是一种对您有意义的可接受的方法吗?谢谢你的评论!我没有那样想。 =)
  • en.wikipedia.org/wiki/Design_pattern_(computer_science) 可以让您了解设计模式。您可以从stackoverflow.com/questions/244706/… 链接的资源中了解更多信息。
  • 感谢这些重要的链接,我必须承认,它们非常有用。尽管我知道Gang of Four 和其他设计模式相关的网站和资源,但我无法理解它们。当您更好地理解同事何时用他自己的话或类似的方式解释它时,有时会出现这种情况。我知道 D&P 是什么,但例如,考虑 @JB King 的回答,我不知道。

标签: design-patterns architectural-patterns


【解决方案1】:

Adapter pattern

Wikipedia link

这种模式的一个真实例子:C# ADO.NET DataAdapter

第一个和最后一个链接都有代码示例供需要的人使用。

【讨论】:

  • +1 引入了一种我完全不知道的模式!
【解决方案2】:

单例模式

定义:如果系统只需要一个类的实例,并且该实例需要在系统的许多不同部分中可访问,您可以通过使该类成为单例来控制实例化和访问.

示例:具体示例是使用 NHibernate 时的 ISessionFactory API。由于内存中的负载,ISessionFactory 实例化的成本,由于它涉及一次将所有对象关系映射和数据库连接全部加载到内存中,建议只创建一个实例,并创建 @ 987654325@ API 实例使用ISessionFactory API 的这个唯一实例,即单例模式

using NHibernate;

internal class NhConnectionFactory {
    private static readonly ISessionFactory _sessionFactory = config.BuildSessionFactory();

    internal NhSystemFactory() {
    }

    internal ISession OpenSession(string connectionString) {
        return _sessionFactory.OpenSession();
    }

    // Other methods here...
}

public static class NhSystemFacade {
    private static readonly NhConnectionFactory _nhConnectionFactory = new NhConnectionFactory();

    public static string DefaultConnectionString {
        get {
            return Properties.Settings.Default.DefaultConnectionString;
        }
    }

    public static ISession OpenSession() {
        return _nhConnectionFactory.OpenSession(DefaultConnectionString);
    }
}

链接:

【讨论】:

    【解决方案3】:

    Lazy Initialisation

    在应用程序运行期间可能不使用某些对象时很有用。因此,如果不需要,则节省内存,因为仅在需要时创建对象。

    【讨论】:

      【解决方案4】:

      【讨论】:

      • +1 我不知道这种模式!谢谢回答我的问题! =)
      猜你喜欢
      • 2010-09-10
      • 2010-09-12
      • 2010-10-03
      • 2011-06-29
      • 1970-01-01
      • 2011-04-15
      • 1970-01-01
      • 1970-01-01
      • 2010-10-04
      相关资源
      最近更新 更多