2

我知道四人帮以及他们的一些模式,例如外观工厂单身人士和其他一些模式。

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

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

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

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

4

4 回答 4

2

单例模式

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

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

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);
    }
}

链接:

于 2010-12-08T21:47:16.923 回答
2

适配器模式

维基百科链接

此模式的一个真实示例:C# ADO.NET DataAdapter

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

于 2010-12-08T21:24:13.467 回答
1

延迟初始化

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

于 2010-12-09T14:08:18.440 回答
1

状态模式 - http://en.wikipedia.org/wiki/State_pattern

于 2011-04-18T11:12:05.417 回答