Net设计模式实例之建造者模式(Builder Pattern)(2)

简介:

四.案例分析(Example)

1、场景

假设房子只有房顶和墙( Roof And Walls )
Jane 和  Joe 两个客户需要从建造商 Bob 那里买房子。 Jane 需要 1 个房顶 (Roof) 和 4 面墙 (Walls) 的房子, Joe 需要 1 个房顶 (Roof) 和 7 面墙 (Walls) 的房子。建造商需要通过建造者模式实现客户的个性要求。
此时建造商 Bob ( Contractor )就是指挥者 (Director),TownHomeSubContractor 和 SingleFamilySubContractor 就是建造者类( Builder Class ),房子就是产品( House is Product ) . 如下图所示
House 类 : House  is Pruduct
Contractor 类 ,指挥者
MakeHouse() 方法,指挥房子建造过程。
ISubConstractor 接口 ,建造者接口,
AddRoof(). 添加房顶方法
AddWalls(), 添加墙的方法
GetHouse(), 获得构建好的房子方法。
TownHomeSubContractor 类 ,具体的建造者,实现建造者接口方法。
建造一个房顶和四面墙,以满足 Jane  的要求。
SingleFamilySubContractor 类 ,具体的建造者,实现建造者接口方法。
建造一个房顶和七面墙,以满足 Joe 的要求。
 

2、代码

1 、产品 House
public  class House
{
    public string Roof { get; set; }
    public string Walls { get; set; }
}
 
 
2 、指挥者类 Contractor
public  class Contractor
{
    public void MakeHouse(ISubContractor contractor)
    {
        contractor.AddRoof();
        contractor.AddWalls();
    }
}
 
3 、抽象建造者 ISubContractor 及其具体建造者 TownHomeSubContractor , SingleFamilySubContractor
//Sub Contractor interface (IBuilder)  
    public interface ISubContractor
    {
        void AddRoof();
        void AddWalls();
        House GetHouse();
    }
 
    //Concrete Builder Classes  
    public class TownHomeSubContractor : ISubContractor
    {
        private House _house = new House();
 
        public void AddRoof()
        {
            _house.Roof = "Adding a small roof";
        }
 
        public void AddWalls()
        {
            _house.Walls = "Adding 4 Walls";
        }
 
        public House GetHouse()
        {
            return _house;
        }
    }
 
    public class SingleFamilySubContractor : ISubContractor
    {
        private House _house = new House();
 
        public void AddRoof()
        {
            _house.Roof = "Adding a large roof";
        }
 
        public void AddWalls()
        {
            _house.Walls = "Adding 7 Walls";
        }
 
        public House GetHouse()
        {
            return _house;
        }
   }
 
4 、客户端代码
static  void  Main (string[] args)
{
    //Jane wants a Town Home  
    Console.WriteLine("Building a Town Home for Jane..");
    Contractor contractor = new Contractor();
    ISubContractor subContractorTownHome = new TownHomeSubContractor();
    contractor.MakeHouse(subContractorTownHome);
    House townHome = subContractorTownHome.GetHouse();
    Console.WriteLine(townHome.Roof + "..");
    Console.WriteLine(townHome.Walls + "..");
 
    //Joe wants a Single Family Home  
    Console.WriteLine("\nBuilding a Town Home for Joe..");
    ISubContractor subContractorSingleFamily = newSingleFamilySubContractor();
    contractor.MakeHouse(subContractorSingleFamily);
    House singleFamilyHouse = subContractorSingleFamily.GetHouse();
    Console.WriteLine(singleFamilyHouse.Roof + "..");
    Console.WriteLine(singleFamilyHouse.Walls + "..");
}
 

3、程序运行结果

五、总结(Summary)

建造者模式( Builder Pattern ),将一个复杂对象的构建与它的表示分离,使的同样的构建过程可以创建不同的表示。建造者模式是在当创建复杂对象的算法应该独立于该对象的组成部分以及他们的装配方式时适用的模式。









本文转自 灵动生活 51CTO博客,原文链接:http://blog.51cto.com/smartlife/262825,如需转载请自行联系原作者

目录
相关文章
|
设计模式 Java Apache
【设计模式】【创建型模式】建造者模式(Builder)
一、入门 什么是建造者模式? 建造者模式(Builder Pattern)是一种创建型设计模式,用于逐步构建复杂对象。 它通过将对象的构建过程与表示分离,使得相同的构建过程可以创建不同的表示。 为什么
1029 14
|
设计模式 算法 数据库连接
PHP中的设计模式:提高代码的可维护性与扩展性本文旨在探讨PHP中常见的设计模式及其应用,帮助开发者编写出更加灵活、可维护和易于扩展的代码。通过深入浅出的解释和实例演示,我们将了解如何使用设计模式解决实际开发中的问题,并提升代码质量。
在软件开发过程中,设计模式是一套经过验证的解决方案模板,用于处理常见的软件设计问题。PHP作为流行的服务器端脚本语言,也有其特定的设计模式应用。本文将重点介绍几种PHP中常用的设计模式,包括单例模式、工厂模式和策略模式,并通过实际代码示例展示它们的具体用法。同时,我们还将讨论如何在实际项目中合理选择和应用这些设计模式,以提升代码的可维护性和扩展性。
395 4
|
设计模式 算法
设计模式--建造者模式 builder
这篇文章通过一个电脑购买的例子,详细解释了建造者模式的四个角色(产品类、抽象构建者、实体构建类和指导者类),并提供了相应的代码实现,阐述了建造者模式在设计复杂对象时的应用和优势。
设计模式--建造者模式 builder
|
Go
在golang中发起http请求以获取访问域名的ip地址实例(使用net, httptrace库)
这只是追踪我们的行程的简单方法,不过希望你跟着探险家的脚步,即使是在互联网的隧道中,也可以找到你想去的地方。接下来就是你的探险之旅了,祝你好运!
801 26
|
设计模式 数据库连接 PHP
PHP中的设计模式:如何提高代码的可维护性与扩展性在软件开发领域,PHP 是一种广泛使用的服务器端脚本语言。随着项目规模的扩大和复杂性的增加,保持代码的可维护性和可扩展性变得越来越重要。本文将探讨 PHP 中的设计模式,并通过实例展示如何应用这些模式来提高代码质量。
设计模式是经过验证的解决软件设计问题的方法。它们不是具体的代码,而是一种编码和设计经验的总结。在PHP开发中,合理地使用设计模式可以显著提高代码的可维护性、复用性和扩展性。本文将介绍几种常见的设计模式,包括单例模式、工厂模式和观察者模式,并通过具体的例子展示如何在PHP项目中应用这些模式。
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP开发领域,设计模式是解决常见问题的高效方案集合。它们不是具体的代码,而是一种编码和设计经验的总结。单例模式作为设计模式中的一种,确保了一个类仅有一个实例,并提供一个全局访问点。本文将深入探讨单例模式的基本概念、实现方式及其在PHP中的应用。
单例模式在PHP中的应用广泛,尤其在处理数据库连接、日志记录等场景时,能显著提高资源利用率和执行效率。本文从单例模式的定义出发,详细解释了其在PHP中的不同实现方法,并探讨了使用单例模式的优势与注意事项。通过对示例代码的分析,读者将能够理解如何在PHP项目中有效应用单例模式。
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP的编程实践中,设计模式是解决常见软件设计问题的最佳实践。单例模式作为设计模式中的一种,确保一个类只有一个实例,并提供全局访问点,广泛应用于配置管理、日志记录和测试框架等场景。本文将深入探讨单例模式的原理、实现方式及其在PHP中的应用,帮助开发者更好地理解和运用这一设计模式。
在PHP开发中,单例模式通过确保类仅有一个实例并提供一个全局访问点,有效管理和访问共享资源。本文详细介绍了单例模式的概念、PHP实现方式及应用场景,并通过具体代码示例展示如何在PHP中实现单例模式以及如何在实际项目中正确使用它来优化代码结构和性能。
433 2
|
设计模式 算法 Java
Java设计模式-建造者模式(6)
Java设计模式-建造者模式(6)
249 1
|
设计模式 XML 存储
【四】设计模式~~~创建型模式~~~建造者模式(Java)
文章详细介绍了建造者模式(Builder Pattern),这是一种创建型设计模式,用于将复杂对象的构建与其表示分离,允许分步骤创建一个复杂的对象而无需指定其内部的具体构造细节。通过定义抽象建造者、具体建造者、指挥者和产品角色,建造者模式允许通过相同的构建过程创建不同的产品表示,提高了系统的灵活性和扩展性。
|
设计模式 JavaScript Java
Java设计模式:建造者模式详解
建造者模式是一种创建型设计模式,通过将复杂对象的构建过程与表示分离,使得相同的构建过程可以创建不同的表示。本文详细介绍了建造者模式的原理、背景、应用场景及实际Demo,帮助读者更好地理解和应用这一模式。
836 0

热门文章

最新文章