当前位置:编程学习 > JAVA >>

设计模式(2)——创建型模式

对设计模式学了有一段的时间了,设计模式是软件工程的基石,他是人们反复使用的,程序员们几十年的经验总结,以“开放—封闭”、“单一职责”、“依赖倒转”、“里氏代换”、“合成聚合复用”、“迪米特法则”、“接口隔离”为基本原则。

 


         本篇博客我对创建型模式进行总结,其中包括:单例模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式。

 


1.      单例模式

        这是最简单的一个模式,保证一个类仅有一个实例,并提供一个访问他的全局访问点。可以严格的控制客户怎样访问它以及何时访问它。简单地说就是对唯一实例的受控访问。它的秘密武器是创建私有的构造函数。(就像中国只能有一个,任何人不可分割)

UML图:

 \

 

代码:

view plaincopy to clipboardprint?namespace 单例模式 

    class Class1 
    { 
        static void Main(string[] args) 
        { 
            Singleto s1 = Singleto.GetInstance(); 
            Singleto s2 = Singleto.GetInstance(); 
            //Singleto s3 = new Singleto();  
            if (s1 == s2) 
            { 
                Console.WriteLine("两个对象是相同的实例"); 
            } 
            Console.Read(); 
        } 
    } 
    class Singleto 
    { 
        private static Singleto instance; 
 
        private Singleto() //让构造方法私有,不能使用new实例化  
        { } 
 
        public static Singleto GetInstance() 
        { 
            if (instance == null) 
            { 
                instance = new Singleto(); 
            } 
            return instance; 
        } 
    } 

namespace 单例模式
{
    class Class1
    {
        static void Main(string[] args)
        {
            Singleto s1 = Singleto.GetInstance();
            Singleto s2 = Singleto.GetInstance();
            //Singleto s3 = new Singleto();
            if (s1 == s2)
            {
                Console.WriteLine("两个对象是相同的实例");
            }
            Console.Read();
        }
    }
    class Singleto
    {
        private static Singleto instance;

        private Singleto() //让构造方法私有,不能使用new实例化
        { }

        public static Singleto GetInstance()
        {
            if (instance == null)
            {
                instance = new Singleto();
            }
            return instance;
        }
    }
}

 

 

 

2 . 工厂方法模式

       定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。(就像服装生产工厂,有专门生产袜子的工厂,有专门生产内衣的工厂)

UML图:

 

 \

 

代码:

view plaincopy to clipboardprint?namespace 工厂模式 

    class Class1 
    { 
        static void Main(string[] args) 
        { 
            IFactory operFactory = new AddFactory(); 
            Operation oper = operFactory.CreateOperation(); 
            oper.NumberA = 1; 
            oper.NumberB = 2; 
            double result = oper.GetResult(); 
            Console.WriteLine(result ); 
        } 
    } 
    interface IFactory   //工厂接口  
    { 
        Operation CreateOperation(); 
    } 
    class AddFactory : IFactory    //加法工厂  
    { 
 
        public Operation CreateOperation() 
        { 
            return new OperationAdd(); 
        } 
    } 
    class SubFactory : IFactory    //减法工厂  
    { 
 
        public Operation CreateOperation() 
     

补充:软件开发 , Java ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,