我知道四人帮以及他们的一些模式,例如外观、工厂、单身人士和其他一些模式。
此外,碰巧我看到了多种我不知道的模式,既不是它们的优点,也不是它们的目的。
我想听听您对您所知道的设计模式的提示。非常感谢您提供解释其用途的代码示例,以及何时将其准确地用于其他模式。
请,每个答案只有一个模式,每个模式一个例子。
看看你想分享的模式是否已经讨论过了。如果没有,请随时与社区分享!=)
定义:如果系统只需要一个类的实例,并且该实例需要在系统的许多不同部分中可访问,则您可以通过使该类成为单例来控制实例化和访问。
示例:一个具体的示例是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);
}
}
链接:
如果在应用程序运行期间可能不使用某些对象,则很有用。因此,如果不需要,则节省内存,因为仅在需要时才创建对象。