android builder 设计模式,设计模式——创造者模式(Builder)

public class Computer {

private String mCpu;

private String mMainboard;

private String mRam;

public void setmCpu(String mCpu) {

this.mCpu = mCpu;

}

public void setmMainboard(String mMainboard) {

this.mMainboard = mMainboard;

}

public void setmRam(String mRam) {

this.mRam = mRam;

}

}

创建Builder

public abstract class Builder {

public abstract void buildCpu(String cpu);

public abstract void buildMainboard(String mainboard);

public abstract void buildRam(String ram);

public abstract Computer create();

}

public class MoonComputerBuilder extends Builder {

private Computer mComputer = new Computer();

@Override

public void buildCpu(String cpu) {

mComputer.setmCpu(cpu);

}

@Override

public void buildMainboard(String mainboard) {

mComputer.setmMainboard(mainboard);

}

@Override

public void buildRam(String ram) {

mComputer.setmRam(ram);

}

@Override

public Computer create() {

return mComputer;

}

}

public class Direcror {

Builder mBuild=null;

public Direcror(Builder build){

this.mBuild=build;

}

public Computer CreateComputer(String cpu,String mainboard,String ram){

//规范建造流程

this.mBuild.buildMainboard(mainboard);

this.mBuild.buildCpu(cpu);

this.mBuild.buildRam(ram);

return mBuild.create();

}

}

public class CreatComputer {

public static void main(String[]args){

Builder mBuilder=new MoonComputerBuilder();

Direcror mDirecror=new Direcror(mBuilder);

//组装电脑

mDirecror.CreateComputer("i7-6700","华擎玩家至尊","三星DDR4");

}

}

优缺点

优点:

使用建造者模式可以使客户端不必知道产品内部组成的细节。

具体的建造者类之间是相互独立的,容易扩展。

由于具体的建造者是独立的,因此可以对建造过程逐步细化,而不对其他的模块产生任何影响。

缺点:

产生多余的Build对象以及Dirextor类。

第二种

public final class FullName

{

private final Name lastName;

private final Name firstName;

private final Name middleName;

private final Salutation salutation;

private final Suffix suffix;

private FullName(

final Name newLastName,

final Name newFirstName,

final Name newMiddleName,

final Salutation newSalutation,

final Suffix newSuffix)

{

this.lastName = newLastName;

this.firstName = newFirstName;

this.middleName = newMiddleName;

this.salutation = newSalutation;

this.suffix = newSuffix;

}

public Name getLastName()

{

return this.lastName;

}

public Name getFirstName()

{

return this.firstName;

}

public Name getMiddleName()

{

return this.middleName;

}

public Salutation getSalutation()

{

return this.salutation;

}

public Suffix getSuffix()

{

return this.suffix;

}

@Override

public String toString()

{

return this.salutation + " " + this.firstName + " " + this.middleName

+ this.lastName + ", " + this.suffix;

}

public static class FullNameBuilder

{

private final Name nestedLastName;

private final Name nestedFirstName;

private Name nestedMiddleName;

private Salutation nestedSalutation;

private Suffix nestedSuffix;

public FullNameBuilder(

final Name newLastName, final Name newFirstName)

{

this.nestedLastName = newLastName;

this.nestedFirstName = newFirstName;

}

public FullNameBuilder middleName(final Name newMiddleName)

{

this.nestedMiddleName = newMiddleName;

return this;

}

public FullNameBuilder salutation(final Salutation newSalutation)

{

this.nestedSalutation = newSalutation;

return this;

}

public FullNameBuilder suffix(final Suffix newSuffix)

{

this.nestedSuffix = newSuffix;

return this;

}

public FullName createFullName()

{

return new FullName(

nestedLastName, nestedFirstName, nestedMiddleName,

nestedSalutation, nestedSuffix);

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值