package main.design23;
/**
* 构造者模式
*/
public class BuilderPattern {
public static void main(String[] args) {
HouseBuilder concreteBuilder = new ConcreteHouseBuilder();
Director director1 = new Director(concreteBuilder);
House concreteHouse = director1.constructHouse();
System.out.println("Concrete House: " + concreteHouse);
HouseBuilder luxuryBuilder = new LuxuryHouseBuilder();
Director director2 = new Director(luxuryBuilder);
House luxuryHouse = director2.constructHouse();
System.out.println("Luxury House: " + luxuryHouse);
}
static class House {
private String foundation;
private String structure;
private String roof;
private String interior;
public void setFoundation(String foundation) {
this.foundation = foundation;
}
public void setStructure(String structure) {
this.structure = structure;
}
public void setRoof(String roof) {
this.roof = roof;
}
public void setInterior(String interior) {
this.interior = interior;
}
@Override
public String toString() {
return "House [foundation=" + foundation + ", structure=" + structure + ", roof=" + roof + ", interior=" + interior + "]";
}
}
static abstract class HouseBuilder {
protected House house = new House();
public abstract void buildFoundation();
public abstract void buildStructure();
public abstract void buildRoof();
public abstract void buildInterior();
public House getHouse() {
return house;
}
}
static class ConcreteHouseBuilder extends HouseBuilder {
@Override
public void buildFoundation() {
house.setFoundation("Standard Foundation");
}
@Override
public void buildStructure() {
house.setStructure("Standard Structure");
}
@Override
public void buildRoof() {
house.setRoof("Standard Roof");
}
@Override
public void buildInterior() {
house.setInterior("Standard Interior");
}
}
static class LuxuryHouseBuilder extends HouseBuilder {
@Override
public void buildFoundation() {
house.setFoundation("Strong Foundation");
}
@Override
public void buildStructure() {
house.setStructure("Reinforced Structure");
}
@Override
public void buildRoof() {
house.setRoof("Elegant Roof");
}
@Override
public void buildInterior() {
house.setInterior("Luxury Interior");
}
}
static class Director {
private HouseBuilder builder;
public Director(HouseBuilder builder) {
this.builder = builder;
}
public House constructHouse() {
builder.buildFoundation();
builder.buildStructure();
builder.buildRoof();
builder.buildInterior();
return builder.getHouse();
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
DesignPattern.rar (29个子文件)
DesignPattern
src
design.md 39KB
main
design23
InterpreterPattern.java 2KB
StrategyPattern.java 2KB
ProxyPattern.java 1KB
SingletonPattern.java 776B
FactoryMethodPattern.java 1KB
DecoratorPattern.java 2KB
MementoPattern.java 2KB
BridgePattern.java 1KB
CompositePattern.java 2KB
AdapterPattern.java 1KB
ObserverPattern.java 2KB
BuilderPattern.java 3KB
StatePatternPattern.java 2KB
IteratorPattern.java 2KB
TemplateMethodPattern.java 1011B
CommandPattern.java 2KB
AbstractFactoryPattern.java 2KB
FlyweightPattern.java 1KB
MediatorPattern.java 2KB
VisitorPattern.java 2KB
ChainOfResponsibilityPattern.java 3KB
PrototypePattern.java 1KB
FacadePattern.java 2KB
.idea
workspace.xml 3KB
misc.xml 278B
modules.xml 273B
.gitignore 225B
DesignPattern.iml 433B
共 29 条
- 1
资源评论
Fong灵
- 粉丝: 810
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功