设计模式(七)建造者模式

来源:互联网 发布:小程序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=优质草皮]]


原创粉丝点击