设计模式(七)建造者模式
来源:互联网 发布:小程序cms系统 编辑:程序博客网 时间:2024/06/06 01:05
适用于某个对象的构建过程复杂的情况,分离了对象子组件的单独构造(由Builder来负责)和装配(由Director负责)。
实现了构建和装配的解耦。不同的构建器,相同的装配,也可以做出不同的对象;相同的构建器,不同的装配顺序也可以做出不同的对象。也就是实现了构建算法、装配算法的解耦,实现了更好的复用。
足球俱乐部类FootBallTeam
public class FootBallTeam {private Player player;private Money money;private Place place;public Player getPlayer() {return player;}public void setPlayer(Player player) {this.player = player;}public Money getMoney() {return money;}public void setMoney(Money money) {this.money = money;}public Place getPlace() {return place;}public void setPlace(Place place) {this.place = place;}@Overridepublic String toString() {return "FootBallTeam [player=" + player + ", money=" + money+ ", place=" + place + "]";}}
里面涉及的球员类Player:
public class Player{private String playerName;public String getPlayerName() {return playerName;}public void setPlayerName(String playerName) {this.playerName = playerName;}@Overridepublic String toString() {return "Player [playerName=" + playerName + "]";}public Player(String playerName) {super();this.playerName = playerName;}}涉及的资金类Money:
public class Money{private int Money;public int getMoney() {return Money;}public void setMoney(int money) {Money = money;}public Money(int money) {super();Money = money;}@Overridepublic String toString() {return "Money [Money=" + Money + "]";}}涉及的场地类Place:
public class Place{private String haveLand;public String getHaveLand() {return haveLand;}public void setHaveLand(String haveLand) {this.haveLand = haveLand;}public Place(String haveLand) {super();this.haveLand = haveLand;}@Overridepublic String toString() {return "Place [haveLand=" + haveLand + "]";}}
构建类FootBallTeamBulider:
public interface FootBallTeamBulider {Player builderPlayer();Money builderMoney();Place builderPlace();}
构建器实现类:
public class FootBallTeamBuliderImpl implements FootBallTeamBulider {@Overridepublic Player builderPlayer() {return new Player("伟大的球员");}@Overridepublic Money builderMoney() {return new Money(88888888);}@Overridepublic Place builderPlace() {return new Place("优质草皮");}}
装配器:
public interface FootBallTeamDirector {FootBallTeam directorFootBallTeam();}
装配器实现类:
public class FootBallTeamDirectorImpl implements FootBallTeamDirector {private FootBallTeamBulider bulider;public FootBallTeamDirectorImpl(FootBallTeamBulider bulider) {this.bulider = bulider;}@Overridepublic FootBallTeam directorFootBallTeam() {Player player= bulider.builderPlayer();Money money = bulider.builderMoney();Place place = bulider.builderPlace();//装配FootBallTeam team = new FootBallTeam();team.setPlayer(player);team.setMoney(money);team.setPlace(place);return team;}}
测试类:
public class ClientTest {public static void main(String[] args) {FootBallTeamDirector director = new FootBallTeamDirectorImpl(new FootBallTeamBuliderImpl());FootBallTeam footBallTeam = director.directorFootBallTeam();System.out.println(footBallTeam);}}控制台输出结果:
FootBallTeam [player=Player [playerName=伟大的球员], money=Money [Money=88888888], place=Place [haveLand=优质草皮]]
阅读全文
0 0
- 设计模式(七)建造者模式
- 设计模式学习(七):建造者模式
- Java设计模式之七(建造者模式)
- 游戏中的设计模式七(建造者模式)
- iOS与设计模式七:建造者模式
- C#设计模式学习小结之七 建造者模式
- Java设计模式之七:建造者模式
- 设计模式3(建造者模式)
- [设计模式]建造者模式(Builder)
- 设计模式(JAVA)-------建造者模式
- 设计模式(五)---建造者模式
- 设计模式--建造者模式(Builder)
- 设计模式(4):建造者模式
- 设计模式Builder(建造者)模式
- 设计模式(9):建造者模式
- 设计模式(5):建造者模式
- 设计模式 - 建造者模式(Builder)
- 设计模式(三)建造者模式
- Cygwin安装教程
- Could not find bundle: org.eclipse.equinox.console
- VSCode使用
- 动态代理之cglib
- Dyna
- 设计模式(七)建造者模式
- intellij idea 找不到静态资源的解决方法
- 文件上传在Struts的Action检测文件类型
- 人工智能基础复习4——不确定知识与推理
- 微信小程序 如何在页面直接传递信息 / 通信方法 / 附带项目案例
- 国际贸易基础(三)商检
- dts和dtsi分析
- vue之独立构建和运行时构建
- 【建模必备】遗传算法的定义与生物学基础