如果您有任何疑问,可以在下面询问或输入您要寻找的!
废话不多说,引出来要求。
要求:修建房屋,修建全过程包含打桩、垒墙和到顶。房屋各种各样,包含农村平房和独栋别墅,程序编写仿真模拟完成。
构思:界定房屋类,包含建房子的方式 ,随后界定农村平房和独栋别墅承继房屋类,重写有关方式 。
类图:
编码:
public abstract class AbstractHouse {
public abstract void buildBasic();//打桩
public abstract void buildWalls();//垒墙
public abstract void buildRoof();//到顶
public void build() { //建房子
buildBasic(); //三个流程(留意次序)
buildWalls();
buildRoof();
}
}
public class Bungalow extends AbstractHouse{
@Override
public void buildBasic() {
System.out.println("农村平房打桩");
}
@Override
public void buildWalls() {
System.out.println("农村平房垒墙");
}
@Override
public void buildRoof() {
System.out.println("农村平房到顶");
}
}
public class Villa extends AbstractHouse{
@Override
public void buildBasic() {
System.out.println("独栋别墅打桩");
}
@Override
public void buildWalls() {
System.out.println("独栋别墅垒墙");
}
@Override
public void buildRoof() {
System.out.println("独栋别墅到顶");
}
}
public class Client {
public static void main(String[] args) {
Bungalow bungalow = new Bungalow();
bungalow.build();
Villa villa = new Villa();
villa.build();
}
}
运作結果:
缺陷:
程序流程不太好拓展和维护保养,把商品和建立商品全过程封裝在一起,耦合度高。
解耦商品和建立商品全过程=》建造者模式
建造者模式(Builder Pattern)又叫制作器方式,是一种目标搭建方式。它能够将繁杂目标的修建全过程抽象性出去(抽象性类型),使这一抽象性全过程的不一样完成方式 能够结构出不一样主要表现(特性)的目标。
一步一步建立一个繁杂的目标,容许客户只根据特定繁杂目标的种类和內容就可以搭建他们,而不用了解內部的实际搭建关键点。
类图:
(
发布反爬信息内容)时尚博主CSDN详细地址:https://wzlodq.blog.csdn.net/
编码:
public class House {
private String baise;
private String wall;
private String roof;
}
public abstract class HouseBuilder {
protected House house = new House();
//将修建的步骤写好, 抽象性的方式
public abstract void buildBasic();
public abstract void buildWalls();
public abstract void buildRoof();
//修建房屋好, 将商品(房屋) 回到
public House buildHouse() {
return house;
}
}
3.Bungalow类(ConcreteBuilder实际建造者A)
public class Bungalow extends HouseBuilder {
@Override
public void buildBasic() {
System.out.println("农村平房打桩");
}
@Override
public void buildWalls() {
System.out.println("农村平房垒墙");
}
@Override
public void buildRoof() {
System.out.println("农村平房到顶");
}
}
4.Villa类(ConcreteBuilder实际建造者B)
public class Villa extends HouseBuilder {
@Override
public void buildBasic() {
System.out.println("独栋别墅打桩");
}
@Override
public void buildWalls() {
System.out.println("独栋别墅垒墙");
}
@Override
public void buildRoof() {
System.out.println("独栋别墅到顶");
}
}
5.HouseDirector类(Director指挥)
public class HouseDirector {
HouseBuilder houseBuilder = null;
//构造器传到 houseBuilder
public HouseDirector(HouseBuilder houseBuilder) {
this.houseBuilder = houseBuilder;
}
//根据setter 传到 houseBuilder
public void setHouseBuilder(HouseBuilder houseBuilder) {
this.houseBuilder = houseBuilder;
}
//如何处理修建房屋的步骤,交到指挥
public House constructHouse() {
houseBuilder.buildBasic();
houseBuilder.buildWalls();
houseBuilder.buildRoof();
return houseBuilder.buildHouse();
}
}
public class Client {
public static void main(String[] args) {
//盖农村平房
Bungalow commonHouse = new Bungalow();
//提前准备建立房屋的指挥
HouseDirector houseDirector = new HouseDirector(commonHouse);
//进行建房子,回到商品(一般房屋)
House house = houseDirector.constructHouse();
System.out.println("--------------------------");
//盖别墅
Villa highBuilding = new Villa();
//重设建造者
houseDirector.setHouseBuilder(highBuilding);
//进行建房子,回到商品(高楼大厦)
houseDirector.constructHouse();
}
}
运作結果:
原創不容易,切勿转截(
本不富有的浏览量始料不及)
时尚博主主页:https://wzlodq.blog.csdn.net/
微信公众平台:唔仄lo咚锵
假如文章内容对您有协助,还记得一键三连❤
我是这篇文章的创作本人 请您把文章删了 ...
评论于 华为eNSP最稳定的装法