`
huqi
  • 浏览: 97021 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

23种经典设计模式的java实现_4_生成器模式

阅读更多

23种经典设计模式的java实现之生成器模式

在这里我们使用一个构建房屋的场景来说明“生成器”——builder模式的使用。

这个模式的定义是:

1、当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。

2、当构造过程必须允许被构造的对象有不同的表示时。

简单的说,它有点像工厂模式,但是最终生成“产品”的是Director而非Factory,Director可以使用的builder来生成产品。而builder——生成器则遵循统一的接口,实现不同的内容,从而达到将一个复杂对象的构建与它的表示分离的目标。

下面看这个实际的例子吧:

首先,这是我们最终需要生成的产品——房屋,它具有房间数量和门数量的属性。

package com.alex.designpattern.builder;

/** *//**
 * 最终我们需要的产品——房屋
 *
 * 
@author <a href="mailto:huqiyes@gmail.com">huqi</a>
 * 
@serialData 2007
 
*/

public class House ...{
    
int roomNumber;

    
int doorNumber;

    
public House() ...{
        roomNumber 
= 0;
        doorNumber 
= 0;
    }


    
public int getRoomNumber() ...{
        
return roomNumber;
    }


    
public int getDoorNumber() ...{
        
return doorNumber;
    }

}

下面就是房屋的真正构建者——“生成器”的接口定义,以及它的一个实现。

package com.alex.designpattern.builder;

/** *//**
 * 房屋构建者的接口
 *
 * 
@author <a href="mailto:huqiyes@gmail.com">huqi</a>
 * 
@serialData 2007
 
*/

public interface HouseBuilder ...{
    
public void BuildRoom(int roomNo);

    
public void BuildDoor(int room1, int room2);

    
public House getHouse();
}


package com.alex.designpattern.builder;

public class ConcreteHouseBuilderA implements HouseBuilder ...{
    
private House house;

    
public ConcreteHouseBuilderA() ...{
        house 
= new House();
    }


    
public void BuildRoom(int roomNo) ...{
        
// you can create a new Room added to a House
        house.roomNumber = house.roomNumber + roomNo;
    }


    
public void BuildDoor(int room1, int room2) ...{
        
// you can create a new door assotiated with 2 room
        
// and added this door into a house
        house.doorNumber = house.doorNumber + room1 + room2;
    }


    
public House getHouse() ...{
        
return house;
    }

}

那么,这就是所谓的Director——最终构建房屋的“表示者”。我们需要给它提供“生成器”,然后由它来构建房屋。

package com.alex.designpattern.builder;

/** *//**
 * 房屋(构建)的“表示”者,通过它我们可以对同一种构建采用不同的表示方式
 *
 * 
@author <a href="mailto:huqiyes@gmail.com">huqi</a>
 * 
@serialData 2007
 
*/

public class HouseDirector ...{

    
public static House CreateHouse(HouseBuilder concreteBuilder) ...{
        concreteBuilder.BuildRoom(
1);
        concreteBuilder.BuildRoom(
2);
        concreteBuilder.BuildDoor(
12);
        concreteBuilder.BuildDoor(
21);
        
return concreteBuilder.getHouse();
    }

}

最后,当然是我们的测试启动类了,可以看到,使用生成器模式的简单过程就是:

1、创建生成器对象。

2、表示者使用此生成器对象构建最终产品。

package com.alex.designpattern.builder;

/** *//**
 * A test client to create a house <br>
 * but we do not know how the room and door be created
 * <p>
 *
 * Builder(生成器模式)
 * <p>
 * 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
 
*/

public class Test ...{

    
public static void main(String[] args) ...{
        ConcreteHouseBuilderA myHouseBuilder 
= new ConcreteHouseBuilderA();
        House myHouse 
= HouseDirector.CreateHouse(myHouseBuilder);
        System.out.println(
"My house has room: " + myHouse.getRoomNumber());
        System.out.println(
"My house has door: " + myHouse.getDoorNumber());
    }

}
 

分享到:
评论

相关推荐

    23种java设计模式.pdf

    JAVA 设计模式可以分为三种:创建模式、结构模式和行为模式。 1. 创建模式 创建模式是指在创建对象时使用的模式,包括 Factory(工厂模式)、Singleton(单例模式)、Builder(建造者模式)、Prototype(原型模式...

    java23种设计模式

    java23种设计模式,每一种模式都有详细的讲解,很全面,如果你想深入了解一下java23种设计模式,这会非常适合你的哦!上传乃为百度云连接,失效请留言。 内容: 001策略模式! N. B8 ~' D! f9 j+ g0 I 002观察者模式 ...

    java_dao_dto生成器

    Java DAO(Data Access Object)是一种设计模式,用于封装对数据库的操作,从而将业务逻辑与数据访问逻辑分离。这种模式在大型项目中广泛应用,因为它提高了代码的可维护性和可测试性。DAO模式通常包括三个主要部分...

    JAVA23中设计模式

    《JAVA23中设计模式》是一份针对Java程序员的指南,旨在通过一系列示例和理论讲解,帮助读者理解和掌握23种经典的设计模式。这些模式被广泛应用于软件开发中,能够提高代码的可维护性、灵活性和可扩展性。 #### 二...

    【资源免费下载】Java代码积累丨大话设计模式(Java实现版本)、线程协作

    Java代码积累:并发 设计模式 数据结构 使用容器 实用 类 基础知识 并发性 演示线程的生命周期 生产者-消费者 设计模式参考《大话设计模式》 工厂简单模式 创造型模式 工厂方法模式 抽象工厂模式 原型模式 建造者...

    Java之23种设计模式解析_尚硅谷_宋红康

    ### Java之23种设计模式解析 #### 一、设计模式概述 设计模式是一种软件设计领域中的最佳实践,它能够帮助开发者解决常见的编程问题。设计模式通常被分为三大类:创建型模式、结构型模式和行为型模式。 ##### ...

    23种设计模式源码(java版)及设计模式帮助文档

    这个压缩包提供了23种经典设计模式的Java源代码实现,以及一个详细的设计模式迷你手册,帮助开发者理解和运用这些模式。 1. **单例模式**:确保一个类只有一个实例,并提供全局访问点。防止多实例引发的问题,常...

    23种设计模式的Java实现

    本主题将深入探讨23种经典设计模式在Java中的实现。 1. **单例模式**:保证一个类只有一个实例,并提供全局访问点。在Java中,可以使用双重检查锁定、静态内部类或枚举方式来实现。 2. **工厂模式**:提供一个接口...

    java生成器模式

    生成器模式(Builder Pattern)是Java设计模式中的创建型模式之一,主要解决复杂对象的构建问题,通过将构造过程逐步分解,使得构造过程与表示分离,使得同样的构建过程可以创建不同的表示。这种模式通常用于创建...

    java的23种设计模式(疯狂java总结)增强版

    设计模式可以分为三种类型,即创建型模式、结构型模式和行为型模式,共包括23种经典的设计模式。本文所涉及的增强版设计模式总结,对原有设计模式进行了扩展、深化和个性化修改。 创建型模式主要关注对象的创建过程...

    23种设计模式的java实现

    本篇将详细探讨23种经典的设计模式及其Java实现。 1. **单例模式**:保证一个类只有一个实例,并提供一个全局访问点。在Java中,可以使用双重检查锁定、静态内部类或枚举等方式实现。 2. **工厂模式**:提供一个...

    23种GoF设计模式Java版.pdf

    **23 迭代器模式** - 提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。 ### 三、结语 设计模式是每个希望成为架构师的技术人员必须掌握的基础知识之一。通过对设计模式的学习和理解,...

    Java23种设计模式.pdf

    设计模式是一种被广泛认可并反复使用的代码设计方法,它对于软件开发人员来说是至关重要的。使用设计模式可以实现代码的复用、提高代码的可读性以及确保代码的可靠性。设计模式可以被看作软件工程中的一块基石,它...

    23种设计模式的java实现.rar

    这个名为"23种设计模式的java实现.rar"的压缩包文件包含了对23个经典设计模式的Java实现,这些模式源自《设计模式:可复用面向对象软件的基础》这本书。 1. 创建型模式(Creational Patterns): - 单例模式...

    23钟设计模式之生成器模式

    生成器模式(Builder Pattern)是一种创造型设计模式,它将一个复杂对象的构建与它的表示分离,使得同样的构建可以创建不同的表示。这种模式可以在以下情况下使用: 1. 当创建复杂对象的算法应该独立于该对象的组成...

    23设计模式java实现

    设计模式是软件工程中的一种最佳实践,用于解决常见的编程问题,提高代码的可读性、可维护性和可扩展性。...通过学习和实践这23种设计模式的Java实现,开发者可以更好地应对各种复杂的软件开发挑战。

    韩顺平_Java设计模式笔记.docx

    Java设计模式笔记.docx》的总结和分析,该笔记涵盖了 Java 设计模式的基础知识、设计模式的七大原则、原型设计模式、解释器设计模式、单例设计模式等内容,并对每个设计模式的原理、实现步骤、代码实现和实际应用...

Global site tag (gtag.js) - Google Analytics