`
wang吖
  • 浏览: 234624 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

设计模式之构建者模式-学习笔记

 
阅读更多

先上个简陋的类图,后面把rose专业的画类图软件装上,自己为了学习留个笔记,方便以后查找使用,以下的例子从构建一个Person展开。

 

Coding:

1、构建者接口设计

public interface IBuilder {

	public void buildHead();

	public void buildBody();

	public void buildFoot();

	public Person buildPerson();
}

 2、Person实体类

public class Person {

	private String head;
	private String body;
	private String foot;

	public String getHead() {
		return head;
	}

	public void setHead(String head) {
		this.head = head;
	}

	public String getBody() {
		return body;
	}

	public void setBody(String body) {
		this.body = body;
	}

	public String getFoot() {
		return foot;
	}

	public void setFoot(String foot) {
		this.foot = foot;
	}

}

 3、构建一个普通人

public class HumanBuilder implements IBuilder {

	private Person person;

	public HumanBuilder() {
		this.person = new Person();
	}

	@Override
	public void buildBody() {

		this.person.setBody("普通人的身体*****************");
	}

	@Override
	public void buildFoot() {
		this.person.setFoot("普通人的脚*****************");
	}

	@Override
	public void buildHead() {
		this.person.setHead("普通人的头*****************");
	}

	@Override
	public Person buildPerson() {
		return this.person;
	}

}

 4、构建一个变形金刚

public class TransformerBuilder implements IBuilder {

	private Person person;

	public TransformerBuilder() {
		this.person = new Person();
	}

	@Override
	public void buildBody() {

		this.person.setBody("变形金刚的身体*****************");
	}

	@Override
	public void buildFoot() {
		this.person.setFoot("变形金刚的脚*****************");
	}

	@Override
	public void buildHead() {
		this.person.setHead("变形金刚的头*****************");
	}

	@Override
	public Person buildPerson() {
		return this.person;
	}

}

 5、建造者构建导向

//构建人的构建导向
public class PersonDirector {

	public Person constructorPerson(IBuilder builder) {
		builder.buildHead();
		builder.buildBody();
		builder.buildFoot();
		return builder.buildPerson();
	}

}

 6、客户端调用

public class Client {

	public static void main(String[] args) {
		PersonDirector pd = new PersonDirector();
		// Person p = pd.constructorPerson(new HumanBuilder());
		Person p = pd.constructorPerson(new TransformerBuilder());

		System.out.println(p.getHead());
		System.out.println(p.getBody());
		System.out.println(p.getFoot());
	}

}

 7、构建者模式和工厂模式有其相通的地方,有兴趣的朋友可以对照着工厂模式和构建者模式做一个比较,构建者模式在某些应用场景下是非常适合和构建者模式结合使用的。



 

  • 大小: 122.4 KB
分享到:
评论

相关推荐

    UML和模式应用学习笔记

     面向对象分析与设计中最重要的能力是能够熟练地为软件构建分配职责  9个职责分配的基本原则:  专家模式。通常情况下,谁来履行职责?将职责指派给信息专家—那些掌握了为履行职责所必需的信息的类。  创建...

    【23种设计模式专题】四 建造者模式

    建造者模式属于创建型模式,建造者模式是23种设计模式的一种,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示,它提供了一种创建对象的最佳方式。 建造者关系: Product(产品):具体...

    asp.net知识库

    VS2005 ASP.NET本地化学习笔记&感受 在自定义Server Control中捆绑JS文件 Step by Step 深度解析Asp.Net2.0中的Callback机制 使用 Web 标准生成 ASP.NET 2.0 Web 站点 ASP.NET 2.0基于SQLSERVER 2005的aspnetdb.mdf...

    Java并发编程(学习笔记).xmind

    生产者-消费者模式 中断的处理策略 传递InterruptedException 恢复中断,让更高层的代码处理 PriorityQueue(非并发) ConcurrentSkipListMap 替代同步的SortedMap ...

    java8集合源码分析-AndroidLearn:Android学习笔记

    java8 集合源码分析 Java 内存模型 并发/多线程 类加载 垃圾回收 Android UI 生命周期 ...ActivityManagerService ...设计模式 代理模式 装饰者模式 架构 MVVM 组件化 JavaScript Linux 版本控制 实战

    中美 IT 培训 C# Asp.net 全套笔记1

    Windows 应用程序、设计模式和Oracle数据库编程(40课时) 系统地讲授Windows应用程序的开发,学习观察者模式和Oracle数据库编程。 熟练开发基于数据库的Windows应用程序,掌握Oracle数据库编程。 C# 高级编程II ...

    matlab代码做游戏-Hsuching-Dev-Starts:我的GitHub明星精选清单!

    matlab代码做游戏很棒的星星 我的GitHub明星精选清单!...-图说设计模式 -Swift编程语言 -使用数据流图进行计算以进行可扩展的机器学习 -内存有效的序列化库 -JavaScript中的Protobuf实现 -协议缓冲区-Google的数据

    中美 IT 培训 C# Asp.net 笔记2

    Windows 应用程序、设计模式和Oracle数据库编程(40课时) 系统地讲授Windows应用程序的开发,学习观察者模式和Oracle数据库编程。 熟练开发基于数据库的Windows应用程序,掌握Oracle数据库编程。 C# 高级编程II ...

    review-notes:团队分享学习、复盘笔记资料共享。Java、Scala、Flink..

    内容编程语言技术框架算法设计与理论DevOps本地构建使用 发布,使用 持续集成执行 npm run docs:dev 进入本地开发模式, 默认访问 localhost:8080如何贡献欢迎投稿、贡献。参考 贡献说明贡献者liming199323-Z....

    中美 IT 培训 C# Asp.net 笔记3

    Windows 应用程序、设计模式和Oracle数据库编程(40课时) 系统地讲授Windows应用程序的开发,学习观察者模式和Oracle数据库编程。 熟练开发基于数据库的Windows应用程序,掌握Oracle数据库编程。 C# 高级编程II ...

    Java SE查阅手册.pdf

    笔记适合了解Java或者有学过其他编程语言的Java初学者学习,多线程与IO的提高笔记与Spring的笔记还在总结当中,另外Linux、MySQL的笔记以后也会发布。现在也是边学习边总结,所以总结的此笔记必然有不足的地方,如果...

    计算机网络课程学习心得.docx

    一、学习笔记总结 1、参考先进的课程教学模式 《计算机网络》被列为计算机专业和信息类专业的核心基础课程之一,其教学目标是为以后计算机网络及其应用的专题学习和研究打下坚实基础,培养未来的网络设计人员和高级...

    仿12306项目JDK17 + SpringBoot3&SpringCloud 微服务架构,构建高并发、大数据量下能提供购票服务

    12306 项目中包含了缓存、消息队列、分库分表、设计模式等代码,通过这些代码可以全面了解分布式系统的核心知识点。 12306 铁路购票服务是与大家生活和出行相关的关键系统,包括会员、购票、订单、支付和网关等服务...

    值类型与引用类型理论内容.part01.rar

    Windows 应用程序、设计模式和Oracle数据库编程(40课时) 系统地讲授Windows应用程序的开发,学习观察者模式和Oracle数据库编程。 熟练开发基于数据库的Windows应用程序,掌握Oracle数据库编程。 C# ...

    值类型与引用类型理论内容.part05.rar

    Windows 应用程序、设计模式和Oracle数据库编程(40课时) 系统地讲授Windows应用程序的开发,学习观察者模式和Oracle数据库编程。 熟练开发基于数据库的Windows应用程序,掌握Oracle数据库编程。 C# ...

    anahita:Anahita是在社交网络基础上开发开放式科学和知识共享应用程序的平台和框架

    在线学习和知识共享网络有关人员,地点和事物的信息访问网络开放科学和开放数据网络在线协作环境移动应用程序的云后端Anahita提供了一个真正的节点和图形架构以及用于构建社交网络应用程序的设计模式。概念节点数...

    点状matlab传播代码-Tutorial_Agent_Based_Models:Python中基于代理的模型的教程

    它们旨在为几乎没有Python经验或没有Python经验的人提供渐进地构造具有不同个性的特工(顽固或灵活的学习者)中的声音变化的简单模拟的能力。 我们将尝试回答以下问题:是否有一种变体传播到整个社区? 这是否取决于...

    计算机实习日记

    北京东方迪格软件有限公司是一家专业的高校实验室解决方案商,公司致力于我国高等院校实验室管理系统和实训方案的构建与实施,专注于高等院校实验室管理信息系统( MIS )方面的设计、开发、销售和技术服务等业务。...

Global site tag (gtag.js) - Google Analytics