建造者模式(Builder Pattern)是属于创建型模式,它的意图是:将一个复杂的对象的创建和表示分离,是的同样的构建过程可以创建不同的表示。
如果有一个类Test有1个属性 name,不管我们如何穿件这个对象的实例都不会很麻烦。
public class Test { private String name; public Test(String name) { super(); this.name = name; } public Test() { super(); } /** * Getter method for property <tt>name</tt>. * * @return property value of name */ public String getName() { return name; } /** * Setter method for property <tt>name</tt>. * * @param name value to be assigned to property name */ public void setName(String name) { this.name = name; } }
public class TestClient { /** * * @param args */ public static void main(String[] args) { Test test=new Test(); test.setName("MyTest"); Test test2=new Test("MyTest2"); } }
那么,如果一个类的属性有很多,甚至是数十个的时候构建一个对象将是一件很痛苦的过程,如下就是在项目中遇到的一个构建一个对象。
TaxBillModel taxBillModel = new TaxBillModel(); taxBillModel.setApplyBillDate(new Date()); taxBillModel.setBillBatchNo(billBatchNo); taxBillModel.setBillDate(new Date()); taxBillModel.setChargeOffDate(new Date()); taxBillModel.setCheckDate(new Date()); taxBillModel.setExchangeDate(new Date()); taxBillModel.setExchangeRate(Double.parseDouble(exchangeRate)); taxBillModel.setExpiryDate(new Date()); taxBillModel.setFailureAmount(new Money(Double.parseDouble(failureAmount))); taxBillModel.setFailureCount(Long.parseLong(failureCount)); taxBillModel.setGmtCreate(new Date()); taxBillModel.setGmtModified(new Date()); taxBillModel.setOriginalAmount(new Money(Double.parseDouble(originalAmount))); taxBillModel.setPartnerName(partnerName); taxBillModel.setRealCurrency(realCurrency); taxBillModel.setRealAmount(new Money(Long.parseLong(realAmount))); taxBillModel.setPartnerId(parnterId); taxBillModel.setRemitNo(remitNo); taxBillModel.setSuccessCount(Long.parseLong(successCount)); taxBillModel.setCurrency(currency); taxBillModel.setStatus("RA");
在这样的一个情况下我们应该使用Builder Pattern 去解决问题。
public class MyModel { private int id; /**名称**/ private String name; /**币种**/ private String currency; /**金额**/ private BigDecimal amount; /** * Getter method for property <tt>id</tt>. * * @return property value of id */ public int getId() { return id; } /** * Setter method for property <tt>id</tt>. * * @param id value to be assigned to property id */ public void setId(int id) { this.id = id; } /** * Getter method for property <tt>name</tt>. * * @return property value of name */ public String getName() { return name; } /** * Setter method for property <tt>name</tt>. * * @param name value to be assigned to property name */ public void setName(String name) { this.name = name; } /** * Getter method for property <tt>currency</tt>. * * @return property value of currency */ public String getCurrency() { return currency; } /** * Setter method for property <tt>currency</tt>. * * @param currency value to be assigned to property currency */ public void setCurrency(String currency) { this.currency = currency; } /** * Getter method for property <tt>amount</tt>. * * @return property value of amount */ public BigDecimal getAmount() { return amount; } /** * Setter method for property <tt>amount</tt>. * * @param amount value to be assigned to property amount */ public void setAmount(BigDecimal amount) { this.amount = amount; } }
public class MyModelBuilder { private int id; private String name; private String currency; private BigDecimal amount; public MyModelBuilder addId(int id) { this.id = id; return this; } public MyModelBuilder addName(String name) { this.name = name; return this; } public MyModelBuilder addMoney(String currency, BigDecimal amount) { this.currency = currency; this.amount = amount; return this; } public MyModel toMyModel() { MyModel myModel = new MyModel(); myModel.setAmount(amount); myModel.setCurrency(currency); myModel.setId(id); myModel.setName(name); return myModel; } } public class Client { /** * * @param args */ public static void main(String[] args) { MyModelBuilder builder = new MyModelBuilder(); builder.addMoney("USD", BigDecimal.valueOf(100)); builder.addId(0); builder.addName("Test"); MyModel myModel = builder.toMyModel(); System.out.println(myModel); } }
相关推荐
Java设计模式-建造者模式详解 Java设计模式-建造者模式详解将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。生成器模式(Builder)是使用多个“小型”工厂来最终创建出一个完整对象。...
建造者模式(Builder)是Java设计模式中的一种创建型模式,它允许我们分步骤构建复杂的对象,而无需暴露其构造过程。在Android开发中,这种模式尤其有用,因为Android组件如Activity、Fragment等的初始化过程通常...
根据给定文件内容,以下是关于Java设计模式的知识点说明: 1. 策略模式(Strategy Pattern)是一种行为设计模式,允许在运行时选择算法的行为。策略模式的意图是定义一系列算法,将每个算法封装起来,并使它们可以...
建造者模式,是Java设计模式中的重要组成部分,它在软件工程中扮演着构造复杂对象的角色。这个模式的主要目的是将对象的构建过程与表示分离,使得同样的构建过程可以创建不同的表示。通过使用建造者模式,我们可以...
这类模式关注对象的创建过程,包括单例模式(Singleton)、工厂模式(Factory)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)和原型模式(Prototype)。它们提供了创建对象的不同策略,使代码更加灵活...
建造者模式是一种结构型设计模式,它允许我们分步骤创建复杂对象,而无需暴露构建过程的内部细节。这种模式在Java编程中非常常见,尤其是在处理需要多种构建方式或需要隔离对象构造过程的场景。 建造者模式的核心...
**建造者模式(Builder Pattern)**是软件设计模式中的一种,属于创建型模式。它将复杂对象的构建过程与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式通常用于那些需要大量构造参数的对象,通过...
建造者模式,是一种创建型设计模式,它提供了一种创建对象的最佳方式,特别是在对象的构建过程比较复杂,需要多个步骤时。在建造者模式中,我们创建一个指导对象(Director),该对象负责组织构建过程,而具体的构建...
在Java中,Builder模式通常包含四个主要角色:Product(产品),Builder(建造者),ConcreteBuilder(具体建造者)和Director(导演)。Product是被构建的对象,Builder定义了产品的构造接口,ConcreteBuilder实现...
建造者模式(Builder Pattern)是Java设计模式中的一种,它属于创建型模式,主要用于构建复杂的对象。这种模式将对象的创建过程与表示分离,使得同样的创建过程可以创建不同的表示。在实际开发中,当我们需要创建的...
JAVA设计模式-day2,请的行业大能讲得课程,涉及:创建模式(5种: 1、 工厂方法模式(Factory Method); 2、 抽象工厂模式; 3、 单例模式(Singleton) • 4、 建造者模式(Builder); 5、 原型模式(Prototype...
8. 建造者模式(BUILDERPATTERN):建造者模式将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 此外,书中还提到了“六大设计原则”,这是设计模式背后的指导思想,包括: 1. 单一...
建造者模式(Builder Pattern)是软件工程中一种用于创建对象的抽象工厂方法,它将复杂的构建过程分解为一系列步骤,使得构建过程可以独立于其表示进行。这种模式允许客户端使用相同的构建过程创建不同表现形式的...
在Java中,23种设计模式被广泛接受并分为三大类:创建型、结构型和行为型。Builder设计模式是创建型模式之一,主要解决复杂对象的构建问题,使得构建过程与表示分离。 Builder模式的核心思想是将一个复杂对象的构建...
5. 建造者模式(Builder):将复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。 **结构型设计模式** 1. 适配器模式(Adapter):使两个不兼容的接口能够协同工作。 2. 桥接模式(Bridge):将...
创建型设计模式如单例(Singleton)、工厂方法(Factory Method)、抽象工厂(Abstract Factory)、建造者(Builder)和原型(Prototype),它们主要关注对象的创建过程,使得代码更加灵活且易于扩展。 结构型设计...
Java设计模式是软件开发中的重要概念,它是一种在特定情境下解决问题的经验总结,可以提高代码的可读性、可维护性和可扩展性。本压缩包包含的源代码涵盖了多个经典的设计模式,接下来将对这些模式进行详细介绍。 1....
### Java设计模式——个人总结 #### 一、概述 本文档总结了常见的Java设计模式及其应用,涵盖了十种经典的设计模式,并提供了相应的代码示例。这些设计模式旨在解决软件开发过程中遇到的一系列常见问题,帮助...