当前位置:首页 > C#教程 > C#高级

设计模式C#实现(七)——生成器模式

生成器模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

UML类图:

技术分享

构成:

1.Builder(接口/抽象类)定义了创建一个产品Product的各个部件的方法,返回创建好的产品。

2.Director  调用Builder创建部件的方法,对产品的创建进行控制 

3.ConcreteBuilder 实现/重写 Builder的方法,负责创建Product各个部件

4.Product 被创建的对象

 

以手机为例,在这里Builder使用抽象类提供了,提供了空的方法作为默认的部件创建方法和创建、返回产品两个方法,也可以定义为接口让具体类去实现

            abstract
            class
             Builder
    {
        
            public Phone phone { get; privateset; }
        virtualpublicvoid createPhone() { phone = new Phone(); }
        virtualpublicvoid addCPU() { }
        virtualpublicvoid addMemory() { }
        virtualpublicvoid addScreen() { }
        virtualpublic Phone getPhone()
        {
            return phone;
        }
    }

一个生成苹果手机的ConcreteBuilder

            class
             AppleBuilder : Builder
    {
         
        
            override
            public
            void
             addCPU()
        {
            phone.CPU = "A7";
        }
        overridepublicvoid addMemory()
        {
            phone.Memory = "1GB";
        }
        overridepublicvoid addScreen()
        {
            phone.Screen = "LG 5.5"";
        }

    }

Director负责调用Builder

            class
             Director
    {
        
            public
            void
             createPhone(Builder builder)
        {
            builder.createPhone();
            builder.addCPU();
            builder.addMemory();
            builder.addScreen();
        }
    }
        

要生成的产品Phone

            class
             Phone
    {
        
            public
            string
             CPU;
        
            public
            string
             Memory;
        
            public
            string
             Screen;
        
            public
            override
            string
             ToString()
        {
            
            return
            "
            CPU:
            "+CPU+"nMemory:"+Memory+"nScreen:"+Screen;
        }
    }

执行代码

 

技术分享

效果:

1.变更产品,只需定义一个新的ConcreteBuilder

2.Director对产品的构造过程可以精细控制(每个部件创建的先后顺序?还有什么?)

原文:http://www.cnblogs.com/castdream/p/4815364.html


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!