创建者模式
来源:互联网 发布:linux怎么设置ip地址 编辑:程序博客网 时间:2024/05/19 20:43
//轨道舱
class OrbitalModule{
private String name;
public OrbitalModule(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
//发动机
class Engine {
private String name;
public Engine(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
//逃逸塔
class EscapeTower{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public EscapeTower(String name) {
super();
this.name = name;
}
}
//宇宙飞船类
public class AirShip {
private OrbitalModule orbitalModule; //轨道舱
private Engine engine; //发动机
private EscapeTower escapeTower; //逃逸塔
public void launch(){
System.out.println("发射!");
}
public OrbitalModule getOrbitalModule() {
return orbitalModule;
}
public void setOrbitalModule(OrbitalModule orbitalModule) {
this.orbitalModule = orbitalModule;
}
public Engine getEngine() {
return engine;
}
public void setEngine(Engine engine) {
this.engine = engine;
}
public EscapeTower getEscapeTower() {
return escapeTower;
}
public void setEscapeTower(EscapeTower escapeTower) {
this.escapeTower = escapeTower;
}
}
//零部件建造接口
public interface AirShipBuilder {Engine builderEngine();
OrbitalModule builderOrbitalModule();
EscapeTower builderEscapeTower();
}
//零部件建造实现类
public class SxtAirShipBuilder implements AirShipBuilder {//StringBuilder, 以后学习XML解析中,JDOM库中的类:DomBuilder,SaxBuilder
@Override
public Engine builderEngine() {
return new Engine("发动机");
}
@Override
public EscapeTower builderEscapeTower() {
return new EscapeTower("逃逸塔");
}
@Override
public OrbitalModule builderOrbitalModule() {
return new OrbitalModule("轨道舱");
}
}
//飞船组装接口
public interface AirShipDirector {AirShip directAirShip();
}
//飞船组装实现类
public class SxtAirshipDirector implements AirShipDirector {private AirShipBuilder builder;
public SxtAirshipDirector(AirShipBuilder builder) {
this.builder = builder;
}
@Override
public AirShip directAirShip() {
Engine e = builder.builderEngine();
OrbitalModule o = builder.builderOrbitalModule();
EscapeTower et = builder.builderEscapeTower();
//装配成飞船对象
AirShip ship = new AirShip();
ship.setEngine(e);
ship.setEscapeTower(et);
ship.setOrbitalModule(o);
return ship;
}
}
测试类
public class Client {
public static void main(String[] args) {
AirShipDirector director = new SxtAirshipDirector(new SxtAirShipBuilder());
AirShip ship = director.directAirShip();
System.out.println(ship.getEngine().getName());
ship.launch();
}
}
阅读全文
0 0
- 创建者模式
- 创建者模式
- 创建者模式
- 创建者模式
- 创建者模式
- 创建者模式
- 创建者模式
- 创建者模式
- 创建者模式
- 创建者模式
- 创建者模式
- 创建者模式
- Builder模式(创建者模式)
- 原型模式 - 创建者模式
- 设计模式--创建者模式
- 设计模式-创建者模式
- 创建者模式详解
- 创建者模式(Builder)
- jQuery常用选择器
- 开博啦
- aria 连接sick lms激光方法
- ORA-02292 外键关联,无法删除记录
- python3之1012. 数字分类 (20分)
- 创建者模式
- Oracle中常用函数总结
- 正则表达式
- vue.js对表格的操作实例
- nginx部署Vue前端项目
- ORA-12547: TNS:lost contact错误解决方法
- 光荣之路:产品测试规范(五)
- 吴恩达深度学习课程deeplearning.ai课程作业:Class 4 Week 3 Autonomous driving application
- 12月11号 解决dpdk抓包时出现imiss的问题