Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Design patterns 你使用什么样的设计模式,它有什么好处?_Design Patterns_Architectural Patterns - Fatal编程技术网

Design patterns 你使用什么样的设计模式,它有什么好处?

Design patterns 你使用什么样的设计模式,它有什么好处?,design-patterns,architectural-patterns,Design Patterns,Architectural Patterns,我知道的和他们的一些模式,如,的,和其他一些 除此之外,我碰巧看到了许多我不知道的模式,它们都不是为了什么好,也不是为了它们的目的 我想知道你对设计模式的看法。如果您能提供一个代码示例来解释它的用法,以及在其他模式上使用它是否准确,我们将不胜感激 请,每个答案只有一个模式,每个模式有一个示例。 看看你想分享的模式是否已经讨论过了。如果没有,请随时与社区分享!=) 此模式的一个真实示例: 第一个和最后一个链接都有代码示例,供需要它们的人使用。Singleton模式 定义:如果一个系统只需要一个

我知道的和他们的一些模式,如,的,和其他一些

除此之外,我碰巧看到了许多我不知道的模式,它们都不是为了什么好,也不是为了它们的目的

我想知道你对设计模式的看法。如果您能提供一个代码示例来解释它的用法,以及在其他模式上使用它是否准确,我们将不胜感激

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

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

此模式的一个真实示例:

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

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

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

链接:


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

状态模式-

对于任何可以编辑我的帖子的人,请将其设置为社区Wiki。虽然我已经在社区维基上提出了其他问题,但我似乎没有复选框,每个设计模式有一个问题不是更好吗?这样,最好的例子就可以被选为最优秀的,并且/或者被接受。@Thomas Langston:当然!虽然这将是非常,我的意思是,非常有趣,我不知道所有的设计模式,所以我希望首先介绍给他们。我想我也会考虑你的建议,然后想出一个更好的主意。这是一种对您有意义的可接受的方法吗?谢谢你的评论!我没有那样想过可以让您了解设计模式。你可以从上链接的资源中学到更多。感谢这些重要的链接,我必须承认,这些链接将非常有用。尽管如此,尽管我知道“四人帮”和其他与设计模式相关的网站和资源,但我无法理解它们。当你更好地理解一位同事用他自己的话或诸如此类的话解释时,这种情况就会出现。我知道D&P是什么,但是,例如,考虑JB-King的答案,我不知道它。+ 1引入一个模式,我根本不知道!我不知道这个图案!谢谢你回答我的问题!=)
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);
    }
}