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

Builder

 
阅读更多

Builder Pattern:可以将一个产品的内部表象与产品的生成过程分割开来,从而使一个建造过程生成具有不同的内部表象的产品对象。

Mobile.java

 

package com.flyingh.product;

import java.util.List;

public class Mobile {
	private List<String> list;

	public Mobile(List<String> list) {
		super();
		this.list = list;
	}

	public List<String> getList() {
		return list;
	}

	public void setList(List<String> list) {
		this.list = list;
	}

	@Override
	public String toString() {
		// TODO Auto-generated method stub
		StringBuilder sb = new StringBuilder("手机拥有功能:[");
		for (String str : list) {
			sb.append(str).append(",");
		}
		sb.deleteCharAt(sb.length() - 1).append("]");
		return sb.toString();
	}

}

 

 MobileBuilder.java

 

package com.flyingh.ibuilder;

import com.flyingh.product.Mobile;

public interface MobileBuilder {
	void addDialFunction();

	void addMp3Function();

	void addMp4Function();

	void addSMSFunction();

	void addMMSFunction();

	void addJavaFunction();

	void addPhotoFunction();

	void addEBookFunction();

	void addRadioFunction();

	void addGameFunction();

	Mobile getMobile();
}

 

ConcreteMobileBuilder.java

package com.flyingh.builder;

import java.util.ArrayList;
import java.util.List;

import com.flyingh.ibuilder.MobileBuilder;
import com.flyingh.product.Mobile;

public class ConcreteMobileBuilder implements MobileBuilder {
	private List<String> list = new ArrayList<String>();

	@Override
	public void addDialFunction() {
		// TODO Auto-generated method stub
		System.out.println("添加打电话功能!");
		list.add("打电话");
	}

	@Override
	public void addMp3Function() {
		// TODO Auto-generated method stub
		System.out.println("添加Mp3功能!");
		list.add("Mp3");
	}

	@Override
	public void addMp4Function() {
		// TODO Auto-generated method stub
		System.out.println("添加Mp4功能!");
		list.add("Mp4");
	}

	@Override
	public void addSMSFunction() {
		// TODO Auto-generated method stub
		System.out.println("添加发短信功能!");
		list.add("发短信");
	}

	@Override
	public void addMMSFunction() {
		// TODO Auto-generated method stub
		System.out.println("添加彩信功能!");
		list.add("彩信");
	}

	@Override
	public void addJavaFunction() {
		// TODO Auto-generated method stub
		System.out.println("添加Java功能!");
		list.add("Java");
	}

	@Override
	public void addPhotoFunction() {
		// TODO Auto-generated method stub
		System.out.println("添加照相机功能!");
		list.add("照相机");
	}

	@Override
	public void addEBookFunction() {
		// TODO Auto-generated method stub
		System.out.println("添加电子书功能!");
		list.add("电子书");
	}

	@Override
	public void addRadioFunction() {
		// TODO Auto-generated method stub
		System.out.println("添加收音机功能!");
		list.add("收音机");
	}

	@Override
	public void addGameFunction() {
		// TODO Auto-generated method stub
		System.out.println("添加游戏功能!");
		list.add("游戏");
	}

	@Override
	public Mobile getMobile() {
		// TODO Auto-generated method stub
		return new Mobile(list);
	}

} 

  Director.java

 

package com.flyingh.idirector;

public interface Director {
	void construct();
}

 

 ConcreteDirectorA.java

 

package com.flyingh.director;

import com.flyingh.ibuilder.MobileBuilder;
import com.flyingh.idirector.Director;

public class ConcreteDirectorA implements Director {
	private MobileBuilder builder;

	public ConcreteDirectorA(MobileBuilder builder) {
		super();
		this.builder = builder;
	}

	public void construct() {
		builder.addDialFunction();
		builder.addSMSFunction();
		builder.addMMSFunction();
		builder.addMp3Function();
		builder.addEBookFunction();
		builder.addJavaFunction();
	}
}

 

ConcreteDirectorB.java

package com.flyingh.director;

import com.flyingh.ibuilder.MobileBuilder;
import com.flyingh.idirector.Director;

public class ConcreteDirectorB implements Director {
	private MobileBuilder builder;

	public ConcreteDirectorB(MobileBuilder builder) {
		super();
		this.builder = builder;
	}

	public void construct() {
		builder.addDialFunction();
		builder.addSMSFunction();
		builder.addMMSFunction();
		builder.addMp3Function();
		builder.addMp4Function();
		builder.addGameFunction();
		builder.addJavaFunction();
		builder.addEBookFunction();
		builder.addRadioFunction();
	}
} 

  Client.java

 

package com.flyingh.client;

import com.flyingh.builder.ConcreteMobileBuilder;
import com.flyingh.director.ConcreteDirectorA;
import com.flyingh.director.ConcreteDirectorB;
import com.flyingh.ibuilder.MobileBuilder;
import com.flyingh.idirector.Director;
import com.flyingh.product.Mobile;

public class Client {
	public static void main(String[] args) {
		MobileBuilder builder = new ConcreteMobileBuilder();
		Director director = new ConcreteDirectorA(builder);
		director.construct();
		Mobile mobile = builder.getMobile();
		System.out.println(mobile);
		System.out.println("*****************");
		builder = new ConcreteMobileBuilder();
		director = new ConcreteDirectorB(builder);
		director.construct();
		mobile = builder.getMobile();
		System.out.println(mobile);
	}
}

 

 程序运行结果如下:

 

添加打电话功能!
添加发短信功能!
添加彩信功能!
添加Mp3功能!
添加电子书功能!
添加Java功能!
手机拥有功能:[打电话,发短信,彩信,Mp3,电子书,Java]
*****************
添加打电话功能!
添加发短信功能!
添加彩信功能!
添加Mp3功能!
添加Mp4功能!
添加游戏功能!
添加Java功能!
添加电子书功能!
添加收音机功能!
手机拥有功能:[打电话,发短信,彩信,Mp3,Mp4,游戏,Java,电子书,收音机]
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    C++Builder5 and C++Builder6编程实例精解编程实例精解(包含 Builder6 PDF档).7z

    C++Builder是一款由Embarcadero Technologies开发的集成开发环境(IDE),主要针对C++语言,为Windows平台提供快速应用程序开发(RAD)解决方案。C++Builder5和C++Builder6是该系列的不同版本,分别发布于2001年和...

    PowerBuilder12.0绿色版

    **PowerBuilder 12.0 简介** PowerBuilder是一款由Sybase(现已被SAP收购)开发的集成开发环境(IDE),主要用于构建企业级的数据库应用系统。这款工具以其强大的数据窗口(DataWindow)组件和面向对象的编程模型而...

    PowerBuilder8.3.rar

    PowerBuilder 8.3 是一款历史悠久的开发工具,主要用于构建企业级的应用程序,尤其是在数据库应用领域。这款软件由Sybase公司开发,以其独特的DataWindow控件和可视化编程环境而闻名。下面将详细介绍PowerBuilder ...

    powerbuilder11.5.rar

    PowerBuilder 11.5的新功能 包括部署PowerBuilder非可视对象(NVOs),包括.NET编译和.NET Smart Client应用 快速使用,并在Web上部署包括Web Services 和 PowerBuilder应用在内的PowerBuilder非可视对象(NVOs) 支持...

    PowerBuilder控件使用手册.pdf

    PowerBuilder 控件使用手册 PowerBuilder 是一款功能强大且流行的开发工具,提供了多种控件来满足不同的开发需求。在本手册中,我们将详细介绍 PowerBuilder 控件的使用方法,包括 Microsoft Web Browser 控件的...

    c++ builder 2007 安装程序

    C++ Builder 2007 是一款由Embarcadero Technologies公司推出的集成开发环境(IDE),专注于C++语言的编程工具。它集成了编译器、调试器、代码编辑器和项目管理工具,旨在帮助开发者高效地创建Windows应用程序。这款...

    powerbuilder9.0下载地址

    ### PowerBuilder 9.0 下载与简介 #### 一、PowerBuilder 9.0 概述 PowerBuilder 是一款由美国 Sybase 公司(现已被 SAP 收购)开发的企业级应用快速开发工具。它结合了强大的数据库管理功能与用户友好的图形界面...

    c++builder6安装包

    C++Builder 6是一款由Borland公司(后被Embarcadero Technologies收购)开发的集成开发环境(IDE),主要用于C++编程语言的应用程序开发。它结合了强大的编译器、调试器、可视化设计工具和其他实用功能,为开发者...

    PlatForm Builder5.0下载

    平台构建器(Platform Builder)是微软提供的一款强大的操作系统开发工具,主要用于构建定制化的嵌入式操作系统,如Windows CE。在本场景中,我们关注的是Platform Builder 5.0,它是Windows CE 5.0版本的开发环境。...

    DspBuilder中文基础教程

    《DspBuilder中文基础教程》是针对初学者的教程,介绍如何使用DspBuilder进行硬件设计。本教程以两个简单电路模型为例,详细阐述了Matlab、DSPBuilder、QuartusII这三个工具软件联合开发的设计流程。 1. EDA技术与...

    powerbuilder2019下载地址

    PowerBuilder 2019是Sybase公司推出的一款强大的企业级应用程序开发工具,主要用于构建数据库驱动的Windows应用程序。它以其直观的图形用户界面(GUI)和数据窗口组件而闻名,大大简化了数据库应用的开发过程。在本...

    windowbuilder1.9.3.zip

    WindowBuilder是Eclipse IDE中的一个强大工具,专用于简化Swing和 SWT(Java窗口小部件工具包)应用程序的开发。1.9.3版本的WindowBuilder提供了对这些框架的直观图形化界面,允许开发者通过拖放组件来创建用户界面...

    C++Builder6.0 Help帮助文档

    C++Builder 6.0 是一个强大的集成开发环境(IDE),专为使用C++语言进行Windows应用程序开发设计。它提供了丰富的工具集、图形化界面设计、数据库连接支持以及高效的编译器。在安装C++Builder 6.0时,有时可能会遇到...

    Powerbuilder6.5安装包

    PowerBuilder 6.5是一款由Sybase公司推出的经典C/S(Client/Server)架构下的应用程序开发工具,尤其在企业级信息系统管理中具有广泛的应用。它以其强大的数据窗口控件、直观的图形化界面以及高效的开发效率,深受...

    windowbuilder安装教程.zip

    WindowBuilder是Eclipse集成开发环境(IDE)中的一个强大工具,专门用于简化Java GUI(图形用户界面)的设计工作。在Eclipse Mars 4.5版本中,安装WindowBuilder可能需要一些特殊的步骤,因为并不是所有公开的教程都...

    PowerBuilder 12.5.2 5629

    PowerBuilder 12.5.2 5629 是一款强大的、面向对象的软件开发工具,主要用于构建企业级的应用程序。它由Sybase(现为SAP的一部分)开发,以其直观的图形用户界面(GUI)和数据窗口技术而闻名。这次的更新,即5629...

    PowerBuilder 12.5手册大全

    PowerBuilder 12.5是一款强大的企业级应用开发工具,尤其在数据窗口设计、数据库应用程序构建方面具有显著优势。这款工具由Sybase公司(后被SAP收购)开发,为开发人员提供了高效的可视化编程环境,使得开发人员可以...

    c++builder 6.0 lite1.07

    C++Builder 6.0 Lite 1.07 是一款历史悠久但依然实用的集成开发环境(IDE),由Borland公司开发。这个版本虽然相对较老,但却因其稳定性和兼容性而受到一部分用户的喜爱,即便是在更新的操作系统如Windows 8.1上也能...

    C++Builder 6 Update Pack4

    C++Builder 6 Update Pack 4 是一个针对 Borland C++Builder 6 的重要更新程序,旨在提升软件的性能、稳定性和兼容性。这个更新包是C++Builder 6用户必须安装的,以确保他们的开发环境能跟上最新的技术趋势,并解决...

    PowerBuilder精美框架

    "PowerBuilder精美框架"是一个专为PowerBuilder开发者设计的用户界面(UI)框架,它具有Windows 7的视觉风格,提供了高度封装的组件和控件,使得开发者能够快速构建出与Winform同样美观的界面。这个框架展示了Power...

Global site tag (gtag.js) - Google Analytics