`
cakin24
  • 浏览: 1388661 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

建造者模式——办理手机套餐

阅读更多

一模式定义

建造者简单理解就是造东西,只不过建造者模式建造的不是一个简单的东西,是一个比较复杂的东西。

 

二模式举例

1模式分析

我们借用顾客到手杌营业厅去办理手机套餐的例子说明这一模式

经过抽象分析后,我们得出下面信息

客户张三——终端需求

营业厅操作员——指导者(通知指导建造者生产什么样的手机套餐)

计算机——建造者(建造各种手机套餐)

手机套餐——产品



 

2建造者模式静态建模



 

3代码示例

3.1创建产品——手机套餐

package com.demo.buider.model;

public class MobilePackage
{
	// 话费
	private float money;
	// 短信
	private int shortInfo;
	// 彩玲
	private String music;

	public float getMoney()
	{
		return money;
	}

	public void setMoney(float money)
	{
		this.money = money;
	}

	public int getShortInfo()
	{
		return shortInfo;
	}

	public void setShortInfo(int shortInfo)
	{
		this.shortInfo = shortInfo;
	}

	public String getMusic()
	{
		return music;
	}

	public void setMusic(String music)
	{
		this.music = music;
	}

}

 3.2建造者接口

package com.demo.buider.itf;

import com.demo.buider.model.MobilePackage;

/**
 * 手机套餐Builder
 * 
 * @author
 * 
 */
public interface IMobileBuilder
{
	// 建造手机套餐的话费
	public void buildMoney();

	// 建造手机套餐的短信
	public void buildShortInfo();

	// 建造手机套餐的彩玲
	public void buildMusic();

	// 返回建造的手机套餐对象
	public MobilePackage getMobilePackage();
}

 3.3建立具体建造者

具体的建造者1

package com.demo.buider.itf;

import com.demo.buider.base.AbstractBasePackage;
import com.demo.buider.model.MobilePackage;

/**
 * 套餐1
 * 
 * @author maofw
 * 
 */
public class MobileBuilderImpl1 extends AbstractBasePackage implements IMobileBuilder
{
	// 建造手机套餐的话费
	public void buildMoney()
	{
		this.mobilePackage.setMoney(20.0f);
	}

	// 建造手机套餐的彩玲
	public void buildMusic()
	{
		this.mobilePackage.setMusic("天使");

	}

	// 建造手机套餐的短信
	public void buildShortInfo()
	{
		this.mobilePackage.setShortInfo(400);

	}

	// 返回建造的手机套餐对象
	public MobilePackage getMobilePackage()
	{

		return this.mobilePackage;
	}

}

 具体的建造者2

package com.demo.buider.itf;

import com.demo.buider.base.AbstractBasePackage;
import com.demo.buider.model.MobilePackage;

/**
 * 套餐2
 * 
 * @author maofw
 * 
 */
public class MobileBuilderImpl2 extends AbstractBasePackage implements IMobileBuilder
{
	// 建造手机套餐的话费
	public void buildMoney()
	{
		this.mobilePackage.setMoney(30.0f);
	}

	// 建造手机套餐的彩玲
	public void buildMusic()
	{
		this.mobilePackage.setMusic("大海");

	}

	// 建造手机套餐的短信
	public void buildShortInfo()
	{
		this.mobilePackage.setShortInfo(600);

	}

	// 返回建造的手机套餐对象
	public MobilePackage getMobilePackage()
	{

		return this.mobilePackage;
	}

}

 3.4创建指导者

package com.demo.buider.director;

import com.demo.buider.itf.IMobileBuilder;
import com.demo.buider.model.MobilePackage;

/**
 * 手机套餐指导者
 * 
 * @author maofw
 * 
 */
public class MobileDirector
{
	public MobilePackage createMobilePackage(IMobileBuilder mobileBuilder)
	{
		if (mobileBuilder != null)
		{
			// 构建话费
			mobileBuilder.buildMoney();
			// 构建短信
			mobileBuilder.buildShortInfo();
			// 构建彩玲
			mobileBuilder.buildMusic();
			// 返回手机套餐
			return mobileBuilder.getMobilePackage();

		}
		return null;
	}
}

 让客户订购手机套餐

package com.demo.buider;

import com.demo.buider.director.MobileDirector;
import com.demo.buider.itf.MobileBuilderImpl1;
import com.demo.buider.itf.MobileBuilderImpl2;
import com.demo.buider.model.MobilePackage;

public class MainApp
{

	/**
	 * 主应用程序
	 * 
	 * @param args
	 */
	public static void main(String[] args)
	{
		// 创建指导者
		MobileDirector mobileDirector = new MobileDirector();
		// 套餐1
		MobileBuilderImpl1 mobileBuilderImpl1 = new MobileBuilderImpl1();
		// 套餐2
		MobileBuilderImpl2 mobileBuilderImpl2 = new MobileBuilderImpl2();

		printMessage(mobileDirector.createMobilePackage(mobileBuilderImpl1));

		printMessage(mobileDirector.createMobilePackage(mobileBuilderImpl2));

	}

	/**
	 * 打印输出套餐信息
	 */
	public static void printMessage(MobilePackage mobilePackage)
	{
		System.out.println("--话费:" + mobilePackage.getMoney() + "\t短信:" + mobilePackage.getShortInfo() + "条\t彩玲:" + mobilePackage.getMusic());
	}
}

 运行结果

--话费:20.0短信:400条彩玲:天使

--话费:30.0短信:600条彩玲:大海

 

三该模式设汁原则

1分步骤创建复杂对象

2构造和表示分离

3单一职责原则

 

四使用场合

1当生成产品对象内部具有复杂结构时

2当复杂对象需要与表示分离,可能需要创建不同表示时

3当需要向客户隐藏产品內部结构表现时



 

  • 大小: 15.7 KB
  • 大小: 61.4 KB
  • 大小: 44.2 KB
0
0
分享到:
评论

相关推荐

    设计模式——建造者模式

    建造者模式是一种结构型设计模式,它允许我们分步骤创建复杂对象,而无需暴露构建过程的内部细节。这种模式在Java编程中非常常见,尤其是在处理需要多种构建方式或需要隔离对象构造过程的场景。 建造者模式的核心...

    Java使用建造者模式实现办理手机套餐功能详解

    通过上述介绍,我们可以看到建造者模式在Java中实现办理手机套餐功能时,是如何通过抽象和模块化的方式,使得套餐配置更加灵活,同时降低了代码的耦合度。通过选择不同的具体建造者,可以快速地构建出满足不同需求的...

    设计模式之建造者模式代码示例

    建造者模式(Builder Pattern)是软件工程中一种用于创建对象的抽象工厂方法,它将复杂的构建过程分解为一系列步骤,使得构建过程可以独立于其表示进行。这种模式允许客户端使用相同的构建过程创建不同表现形式的...

    建造者模式c++实现

    建造者模式是一种设计模式,它将复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。在C++中实现建造者模式,我们可以遵循以下步骤: 首先,我们需要定义一个抽象建造者(Builder)类,它声明了一...

    设计模式之建造者模式

    建造者模式(Builder Pattern)是设计模式中的一种创建型模式,它允许我们分步骤构建复杂的对象,通过将构造过程与对象本身分离,使得同样的构造过程可以创建不同的表示。这种模式常用于当创建对象的步骤复杂或者...

    Java建造者模式源码

    Java建造者模式是一种设计模式,属于创建型模式,它的主要目的是通过隔离对象的构建过程和其表示,使得构造复杂对象的过程更加灵活。这种模式通常在需要创建对象的多个部分,并且这些部分可能需要以特定顺序组合时...

    建造者模式学习以及与工厂模式的区别

    建造者模式(Builder Pattern)是一种创建型设计模式,它提供了一种方法来分步骤构建复杂的对象,使得构建过程和表示分离。这种模式常用于当一个对象的构建过程复杂且需要多个步骤时,或者当我们希望同一个构建过程...

    建造者模式.pptx

    ### 建造者模式详解 #### 模式介绍 建造者模式(Builder Pattern)是设计模式中的一种,主要用于创建复杂对象。此模式的核心在于将一个复杂对象的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。简单...

    设计模式-建造者模式

    建造者模式(Builder Pattern)是一种创建型设计模式,它提供了一种方法来分步骤构建复杂的对象,使得构建过程和表示分离,使得同样的构建过程可以创建不同的表示。这种模式经常在对象的构造过程中需要进行多种选择...

    ios 进阶 建造者模式

    建造者模式,也被称为Director模式,是设计模式中的一种创建型模式。在iOS开发中,尤其是在构建复杂对象或者需要进行定制化组装时,建造者模式显得尤为重要。它将产品的构造过程与产品本身分离,使得创建过程更加...

    建造者模式实例

    建造者模式是一种设计模式,属于创建型模式,它允许我们分步骤构造复杂对象,而无需暴露构造过程。这种模式将对象的构造过程和表示层分离,使得同样的构造过程可以创建不同的表示形式。在《设计模式:可复用面向对象...

    原创:设计模式之建造者模式生动实例

    建造者模式,是设计模式中的一种创建型模式,它的核心思想是将复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。在Java编程中,这种模式经常用于生成对象,特别是当对象的创建过程较为复杂时,...

    qt5编写的建造者模式程序

    【建造者模式】是软件工程中的一个设计模式,属于创建型模式,它隔离了对象的构造过程,并允许用户以步骤化的方式创建复杂对象。在Qt5框架中,我们可以利用其强大的C++支持来实现建造者模式,这对于创建复杂的UI或者...

    设计模式-建造者模式(讲解及其实现代码)

    建造者模式,是一种创建型设计模式,它提供了一种创建对象的最佳方式,特别是在对象的构建过程比较复杂,需要多个步骤时。在建造者模式中,我们创建一个指导对象(Director),该对象负责组织构建过程,而具体的构建...

    java 建造者模式

    建造者模式(Builder Pattern)是Java设计模式中的创建型模式之一,它允许我们分步骤创建复杂的对象,通过将构造过程与表示分离,使得同样的构造过程可以创建不同的表示。这种模式通常用于那些具有多种构建方式或者...

    java 建造者模式代码

    建造者模式是一种设计模式,它将复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。在Java中,这种模式通常用于构建对象时,尤其是当对象的构造过程复杂,需要多步骤或者允许用户自定义构建过程时...

    设计模式例子,观察者模式,建造者模式

    在给定的压缩包文件中,"设计模式例子,观察者模式,建造者模式" 提到了两种重要的设计模式:观察者模式(Observer Pattern)和建造者模式(Builder Pattern)。下面我们将深入探讨这两种设计模式的概念、应用场景、...

    C#设计模式之建造者模式

    建造者模式是软件设计模式中的一种,主要用于将复杂的对象构建过程与对象的使用分离,使得同样的构建过程可以创建不同的表示。在C#中,我们可以通过类的继承和接口的使用来实现这一模式。以下是关于“C#设计模式之...

    C++建造者模式的一个例子.zip

    建造者模式是一种软件设计模式,它允许我们分步骤构建复杂对象,而无需暴露构建过程的细节。在C++中,这种模式尤其有用,因为它可以提供一种灵活的方式来构造对象,同时保持代码的清晰和可维护性。这个名为"C++建造...

Global site tag (gtag.js) - Google Analytics