『学習ノート』のJAVAデザインモデル--建造者モデル
22434 ワード
《 》 , :
:
: : (Builder)
前言
, , , corn 。
一、建設者モデルとは何か
Builder , GoF 23 , : , 。
GoF , , : ( , , ), , ( ), ,Builder , , , , , 。
、
建造者模式适合于创建比较复杂的对象,所谓复杂有两个方向:
- , 。
- , 。
以上の2種類の複雑なオブジェクトBuilderモードに対してもそれぞれ2つの表現形式が進化した.
1つ目:Product、ConcreteBuilder、Builder、Directorによって形成されたコンストラクタモード
, Builder 4 : (Product), (ConcreteBuilder), (Builder), (Director)
:
: ,
:
:
, 、 , , , , , ..., Builder 。
, 。
public class SysApplication { // private String data; // private String operationSystem; // private String driver; // private String usefulSoftware; public String getData() { return data; } public void setData(String data) { this.data = data; } public String getOperationSystem() { return operationSystem; } public void setOperationSystem(String operationSystem) { this.operationSystem = operationSystem; } public String getDriver() { return driver; } public void setDriver(String driver) { this.driver = driver; } public String getUsefulSoftware() { return usefulSoftware; } public void setUsefulSoftware(String usefulSoftware) { this.usefulSoftware = usefulSoftware; } }
ISysInstallBuilder , Builder 。
public interface ISysInstallBuilder { // public void backupdata(); // public void formatDisk(); // public void copyData(); // public void installOperationSystem(); // public void installDriver(); // public void installUsefulSoftware(); // public SysApplication getSystemApplication(); }
Windows XP WinXpInstallBuilder, Windows XP 。
public class WinXpInstallBuilder implements ISysInstallBuilder { private SysApplication systemApplication = new SysApplication(); @Override public void backupdata() { // System.out.println(" "); } @Override public void formatDisk() { // System.out.println(" "); } @Override public void copyData() { // System.out.println(" "); this.systemApplication.setData(" "); } @Override public void installOperationSystem() { // Windows XP System.out.println(" Windows XP "); this.systemApplication.setOperationSystem("Windows XP"); } @Override public void installDriver() { // Windows XP System.out.println(" Windows XP "); this.systemApplication.setDriver("Windows XP "); } @Override public void installUsefulSoftware() { // Windows XP System.out.println(" Windows XP "); this.systemApplication.setUsefulSoftware("Windows XP "); } @Override public SysApplication getSystemApplication() { // return this.systemApplication; } }
WinXpInstallBuilder, 。
public class MainClass { public static void main(String[] args) { // WinXpInstallBuilder ISysInstallBuilder builder = new WinXpInstallBuilder(); // WinXpInstallBuilder, builder.backupdata(); builder.copyData(); builder.formatDisk(); builder.installDriver(); builder.installOperationSystem(); builder.installUsefulSoftware(); // SysApplication sysApplication = builder.getSystemApplication(); System.out.println("---------- ----------"); System.out.println(" :" + sysApplication.getData()); System.out.println(" :" + sysApplication.getDriver()); System.out.println(" :" + sysApplication.getOperationSystem()); System.out.println(" :" + sysApplication.getUsefulSoftware()); } }
:
Windows XP
Windows XP
Windows XP
---------- ----------
:
:Windows XP
:Windows XP
:Windows XP
, , , , 。
, , ? 。
public class SysInstallDirector { private ISysInstallBuilder builder; public SysInstallDirector(ISysInstallBuilder builder) { this.builder = builder; } public void installSystem() { builder.backupdata(); builder.formatDisk(); builder.installOperationSystem(); builder.installDriver(); builder.installUsefulSoftware(); builder.copyData(); } }
。
public class MainClass { public static void main(String[] args) { // WinXpInstallBuilder ISysInstallBuilder builder = new WinXpInstallBuilder(); // SysInstallDirector director = new SysInstallDirector(builder); // director.installSystem(); // SysApplication sysApplication = builder.getSystemApplication(); System.out.println("---------- ----------"); System.out.println(" :" + sysApplication.getData()); System.out.println(" :" + sysApplication.getDriver()); System.out.println(" :" + sysApplication.getOperationSystem()); System.out.println(" :" + sysApplication.getUsefulSoftware()); } }
:
Windows XP
Windows XP
Windows XP
---------- ----------
:
:Windows XP
:Windows XP
:Windows XP
, 。
Win7 Win7InstallBuilder。
public class Win7InstallBuilder implements ISysInstallBuilder { private SysApplication systemApplication = new SysApplication(); @Override public void backupdata() { // System.out.println(" "); } @Override public void formatDisk() { // System.out.println(" "); } @Override public void copyData() { // System.out.println(" "); this.systemApplication.setData(" "); } @Override public void installOperationSystem() { // Win7 System.out.println(" Win7 "); this.systemApplication.setOperationSystem("Win7"); } @Override public void installDriver() { // Win7 System.out.println(" Win7 "); this.systemApplication.setDriver("Win7 "); } @Override public void installUsefulSoftware() { // Win7 System.out.println(" Win7 "); this.systemApplication.setUsefulSoftware("Win7 "); } @Override public SysApplication getSystemApplication() { // return this.systemApplication; } }
MainClass Win7 。
public class MainClass { public static void main(String[] args) { // Win7InstallBuilder ISysInstallBuilder builder = new Win7InstallBuilder(); // SysInstallDirector director = new SysInstallDirector(builder); // director.installSystem(); // SysApplication sysApplication = builder.getSystemApplication(); System.out.println("---------- ----------"); System.out.println(" :" + sysApplication.getData()); System.out.println(" :" + sysApplication.getDriver()); System.out.println(" :" + sysApplication.getOperationSystem()); System.out.println(" :" + sysApplication.getUsefulSoftware()); } }
:
Win7
Win7
Win7
---------- ----------
:
:Win7
:Win7
:Win7
Win7 ,Builder , , 。
2 : クラスによる なオブジェクトの
PersonalInfo, : , , , , , 。
public class PersonalInfo { private String name; private int age; private String gender; private String address; private String iDNumber; private String phoneNumber; public String getPhoneNumber() { return phoneNumber; } public String getAddress() { return address; } public String getName() { return name; } public int getAge() { return age; } public String getGender() { return gender; } public String getIDNumber() { return iDNumber; } public static class Builder { private String name; private int age; private String gender; private String address; private String iDNumber; private String phoneNumber; public Builder(String name) { this.name = name; } public Builder phoneNumber(String phoneNumber) { this.phoneNumber = phoneNumber; return this; } public Builder address(String address) { this.address = address; return this; } public Builder age(int age) { this.age = age; return this; } public Builder gender(String gender) { this.gender = gender; return this; } public Builder iDNumber(String iDNumber) { this.iDNumber = iDNumber; return this; } public PersonalInfo build() { return new PersonalInfo(this); } } private PersonalInfo(Builder builder) { this.address = builder.address; this.age = builder.age; this.gender = builder.gender; this.iDNumber = builder.iDNumber; this.name = builder.name; this.phoneNumber = builder.phoneNumber; } }
MainClass 。
public class MainClass { public static void main(String[] args) { PersonalInfo personalInfo = new PersonalInfo.Builder(" ") .address(" ").age(19).gender(" ").build(); System.out.println("------------ ----------------"); System.out.println(" :"+personalInfo.getName()); System.out.println(" :"+personalInfo.getAddress()); System.out.println(" :"+personalInfo.getAge()); System.out.println(" :"+personalInfo.getGender()); } }
:
------------ ----------------
:
:
:19
:
, , , 。
、
- 。
- 。
- :