设计模式学习

1.单件模式(Singleton Pattern)
用于全局只有一个实例的情况。
实现要领:a.构造函数定义为private
             b.定义静态私有成员,类型为这个类
             c.定义公有静态方法,GetInstance。该方法内需要注意线程同步。
             d.其他类的成员或者方法可以不为static
  public class Singleton
    {

       private static Singleton _Instance;
        /// <summary>
        /// 不让外部访问构造函数
        /// </summary>
        private Singleton()
        {
        }
            
        public static Singleton GetInstance()
        {
            System.Threading.Mutex mutex=new System.Threading.Mutex();
            mutex.WaitOne();

            if(_Instance==null)
            {
                _Instance=new Singleton();
               //虽然构造函数是private的,但在该类定义内部,还是能够访问的
            }

            mutex.ReleaseMutex();

            return _Instance;
           
        }      

    }

2.简单工厂模式(Simple Factory Pattern)
构成:简单工厂类,产品基类,产品继承类
缺点:增加一种产品继承类,就需要改变简单工厂类
3.工厂方法(Factory Method)
定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到子类,这个接口所指的是一个抽象方法。该方法说明需要创建一个对象,但并不给出具体的创建方法和创建什么类型的对象。
能够解决简单工厂存在的缺点。需要一个抽象的工厂类和具体的工厂类,具体的工厂类和具体的产品类相对应。其对应关系可以通过代码解决,或者通过配置文件,反射的方式解决(petshop就是这么解决的)。
参考网址:简单工厂,工厂方法:
http://www.cnblogs.com/shenfx318/archive/2007/01/09/614844.html
抽象工厂:
http://community.hf-mstc.org/cs/RssAggregation/BlogView.aspx?ID=aHR0cDovL3d3dy5jbmJsb2dzLmNvbS9zaGVuZngzMTgvYXJjaGl2ZS8yMDA3LzAxLzE2LzYyMTIzNy5odG1s

你可能感兴趣的:(设计模式)