if (instance == null) { instance = new Singleton(); }} return instance ;} }
双重锁定:不用让线程每次都加锁,而只是在实例未被创建的时候再加锁处理。同时也能保证多线程的安全性。
class Singleton{private static Singleton instance;
private static readonly object syncRoot = new object(); private Singleton(){ }
public static Singleton GetInstance(){if (instance == null) { lock (syncRoot) {
if (instance == null) { instance = new Singleton();}}} return instance;} 静态初始化:不需要开发人员显示地编写线程安全代码,即可解决多线程环境下它是不安全的问题。
public sealed class Singleton{
private static readonly Singleton instance=new Singleton(); private Singleton(){}
public static Singleton GetInstance(){return instance; }} 组合模式:
透明方式:在Component中声明所有用来管理子对象的方法,其中包括Add、Remonve
等。这样实现Component接口的所有子类都具备了Add和Remove。这样做的好处就是叶节点和枝节点对外界没有区别,他们具备完全一致的行为接口。 安全方式:在Component接口中不去声明Add和Remove方法,那么子类的Leaf也就不
要去实现它,而是在Composite声明所有用来管理子类对象的方法。由于不透明,客户端要做判断。 外观模式:
创建http://www.77cn.com.cn的Façade
2、 设计模式的两大主题是什么? 答:对象组合,类继承的讨论
3、 设计模式分成几大类?每大类各包含哪些模式?
答:
模式大体上分为3类,分别从对象
的创建、对象的结构和对象的行为这3个方面来总结软件开发人员在设计方面的经验。