说说设计模式~建造者模式(Builder)

简介:

建造者模式是我的"设计模式"里创建型模式里的最后一篇,这种模式在实现中,很多架构都用到了,如MVC,MVP,MVVM,它们都是有建造者模式的精髓的,即,创建与表现分享,我们的MVC何尝不是,我们的MVVM又何尝不是呢,我们做软件的,换肤是常有的事,其实换肤的实现不就是建造者模式最好的体现吗,呵呵.

定义

将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。

何时能用到它?

1 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
2 当构造过程必须允许被构造的对象有不同表示时。

建造者模式的结构图

建造者模式实现说明

1 Person:为一个主对象,它可能很大,很复杂。
2 Man:为Person下的一个分支,一个子类,本例中指男人对象
3 PersonDirector:为建造者模式中的指导者,它决定的创建产品的过程,顺序
4 PersonBuilder:实现建造过程所需要的行为接口,PersonDirector中会用到它

5 ManBuilder:这是一个具体的执行者,它可能有多个,每个执行者负责自己的部分

建造者模式的C#实现

  public class Person
    {
        public string Name { get; set; }
        public short Gander { get; set; }
        public String Head { get; set; }
        public String Body { get; set; }
        public String Foot { get; set; }
        public void SetHead(string content) { Console.WriteLine(content); Head = content; }
        public void SetBody(string content) { Console.WriteLine(content); Body = content; }
        public void SetFoot(string content) { Console.WriteLine(content); Foot = content; }
        public override string ToString()
        {
            return string.Format("Head={0},Body={1},Foot={2}", Head, Body, Foot);
        }
    }
    public class Man : Person
    {
        public Man()
        {
            this.Gander = 1;
        }
    }
    public interface PersonBuilder
    {
        void buildHead();
        void buildBody();
        void buildFoot();
        Person buildPerson();
    }
    public class PersonDirector
    {
        public Person constructPerson(PersonBuilder pb)
        {
            pb.buildHead();
            pb.buildBody();
            pb.buildFoot();
            return pb.buildPerson();
        }
    }
    public class ManBuilder : PersonBuilder
    {
        Person person;
        public ManBuilder()
        {
            person = new Man();
        }
        public void buildBody()
        {
            person.SetBody("建造男人的身体");
        }
        public void buildFoot()
        {
            person.SetFoot("建造男人的脚");
        }
        public void buildHead()
        {
            person.SetHead("建造男人的头");
        }
        public Person buildPerson()
        {
            return person;
        }
 
    }
}

下面是调用程序

    PersonDirector pd = new PersonDirector();
    Person person = pd.constructPerson(new ManBuilder());
    Console.WriteLine(person.ToString());

程序截图

本文转自博客园张占岭(仓储大叔)的博客,原文链接:说说设计模式~建造者模式(Builder),如需转载请自行联系原博主。

目录
相关文章
|
3月前
|
设计模式 算法
设计模式--建造者模式 builder
这篇文章通过一个电脑购买的例子,详细解释了建造者模式的四个角色(产品类、抽象构建者、实体构建类和指导者类),并提供了相应的代码实现,阐述了建造者模式在设计复杂对象时的应用和优势。
设计模式--建造者模式 builder
|
1月前
|
设计模式 JavaScript Java
Java设计模式:建造者模式详解
建造者模式是一种创建型设计模式,通过将复杂对象的构建过程与表示分离,使得相同的构建过程可以创建不同的表示。本文详细介绍了建造者模式的原理、背景、应用场景及实际Demo,帮助读者更好地理解和应用这一模式。
|
3月前
|
设计模式 算法 Java
Java设计模式-建造者模式(6)
Java设计模式-建造者模式(6)
|
4月前
|
设计模式 XML 存储
【四】设计模式~~~创建型模式~~~建造者模式(Java)
文章详细介绍了建造者模式(Builder Pattern),这是一种创建型设计模式,用于将复杂对象的构建与其表示分离,允许分步骤创建一个复杂的对象而无需指定其内部的具体构造细节。通过定义抽象建造者、具体建造者、指挥者和产品角色,建造者模式允许通过相同的构建过程创建不同的产品表示,提高了系统的灵活性和扩展性。
|
5月前
|
设计模式 JavaScript
js设计模式【详解】—— 建造者模式
js设计模式【详解】—— 建造者模式
58 0
|
6月前
|
设计模式
设计模式-05建造者模式(Builder Pattern)
设计模式-05建造者模式(Builder Pattern)
|
6月前
|
设计模式 算法 索引
程序技术好文:设计模式之美:Builder(生成器)
程序技术好文:设计模式之美:Builder(生成器)
|
6月前
|
设计模式 Java
Java设计模式:建造者模式之经典与流式的三种实现(四)
Java设计模式:建造者模式之经典与流式的三种实现(四)
|
6月前
|
设计模式 Java
Java设计模式之建造者模式详解
Java设计模式之建造者模式详解
|
6月前
|
设计模式 Java
设计模式之建造者模式
设计模式之建造者模式