你使用什么设计模式,它有什么用?

时间:2010-12-08 21:10:30

标签: design-patterns architectural-patterns

我了解Gang of Four及其部分模式,例如FaçadeFactorySingleton以及其他一些模式。

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

我想了解你所知道的设计模式。非常感谢您提供一个代码示例来解释其使用,以及何时将其用于另一种模式是准确的。

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

  

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

4 个答案:

答案 0 :(得分:2)

Adapter pattern

Wikipedia link

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

第一个和最后一个链接都有代码样本供那些想要它们的人使用。

答案 1 :(得分:2)

单身人士模式

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

示例:使用NHibernate时,一个具体示例是ISessionFactory API。由于内存中的负载ISessionFactory需要实例化,因为它涉及所有对象关系映射和数据库连接一次性加载到内存中,建议只创建一个实例,并创建使用ISession API的唯一实例的ISessionFactory API实例,即 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);
    }
}

<强>链接:

答案 2 :(得分:1)

Lazy Initialisation

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

答案 3 :(得分:1)