java_232_GOF23设计模式_建造者模式详解_练习

在这里插入图片描述
建造者模式
在这里插入图片描述

package java_232_GOF23设计模式_建造者模式详解_练习;
/**

  • AirShip飞船
    */
    public class AirShip {
    private orbitalModule orbitalModule;//轨道舱
    private Engine engine;//发动机
    private EscapeTower escapeTower;//逃逸塔

    //get与set方法
    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;
    }
    }
    //添加类属性,构造器及相关的get与set方法;
    class orbitalModule{
    private String name;

    public orbitalModule(String name) {
    super();
    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) {
	super();
	this.name = name;
}

public String getName() {
	return name;
}

public void setName(String name) {
	this.name = name;
} 

}

class EscapeTower{
private String name;

public EscapeTower(String name) { 
	super();
	this.name = name;
}

public String getName() {
	return name;
}

public void setName(String name) {
	this.name = name;
} 

}
//----------------------飞船接口-------------------------------
package java_232_GOF23设计模式_建造者模式详解_练习;
/**
*

  • AirShipBuilder飞船建造接口
  • 构建子组件

/
public interface AirShipBuilder {//AirShipBuilder飞船建造
//构建发动机
Engine builderEngine();//Builder构建
OrbitalModule builderOrbitalModule();
EscapeTower builderEscapeTower();
}
//------------------------飞船装配接口---------------------
package java_232_GOF23设计模式_建造者模式详解_练习;
/
*

  • AirShipDirector飞船装配
    /
    public interface AirShipDirector {//Director导引器
    AirShip createAirShip();//createAirShip创建飞船;create创建;或者用词directAirShip()(管理)也可以
    }
    //--------------------------具体创建飞船类------------------------------
    package java_232_GOF23设计模式_建造者模式详解_练习;
    /
    *

  • SxtAirShipBuilder; Sxt飞船建设者 , sxt是自己创建的一个名称
    */
    public class SxtAirShipBuilder implements AirShipBuilder {//Builder创建者;注意:以Builder结尾的都是构建者模式;
    //常见的StringBuilder,以后学习XML解析中,JDOM库中的类:DomBuilder,SaxBuilder;
    //重写方法
    public Engine builderEngine() {
    System.out.println(“构建sxt牌发动机”);
    return new Engine(“sxt牌发动机”);//也可以用工厂模式结合起来;创建一个发动机工厂模式或者单例模式;以下类似
    }

    public EscapeTower builderEscapeTower() {
    System.out.println(“构建sxt牌逃逸塔”);
    return new EscapeTower(“sxt牌逃逸塔”);
    }

    public OrbitalModule builderOrbitalModule() {
    System.out.println(“构建sxt牌轨道舱”);
    return new OrbitalModule(“sxt牌轨道舱”);
    }
    }
    //----------------------具体实现类------------------------------
    package java_232_GOF23设计模式_建造者模式详解_练习;
    /**

  • 具体实现类

  • SxtAirShipDirector;sxt飞船创建者

*/
public class SxtAirShipDirector implements AirShipDirector{
//定义一个属性;为了获取构建的引用,便于下面使用
private AirShipBuilder builder;//builder构建者
//构造器
public SxtAirShipDirector(AirShipBuilder builder) {
super();
this.builder = builder;
}
//重写
public AirShip directAirShip() {
//调用builder创建不同的子组建
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;
}
//------------------------------测试类------------------------------
package java_232_GOF23设计模式_建造者模式详解_练习;

/**

  • 测试类
    /
    public class Client {//Client客户端
    public static void main(String[] args) {
    //获取装配者和构建者
    AirShipDirector director = new SxtAirShipDirector(new SxtAirShipBuilder());
    //通过装配者获取飞船属性
    AirShip ship = director.directAirShip();
    //获取内容
    System.out.println(ship.getEngine().getName());
    System.out.println(ship.getEscapeTower().getName());
    System.out.println(ship.getOrbitalModule().getName());
    }
    }
    //结果----------------------------------------
    在这里插入图片描述
    //-------------------------如果添加其他方法-----------------------
    package java_232_GOF23设计模式_建造者模式详解_练习;
    /
    *

  • AirShip飞船
    */
    public class AirShip {
    private OrbitalModule orbitalModule;//轨道舱
    private Engine engine;//发动机
    private EscapeTower escapeTower;//逃逸塔

    //2.添加其他方法 如发射
    public void launch(){
    System.out.println(“点火发射”);
    }

    //get与set方法
    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;
    }
    }
    //添加类属性,构造器及相关的get与set方法;
    class OrbitalModule{
    private String name;

    public OrbitalModule(String name) {
    super();
    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) {
	super();
	this.name = name;
}

public String getName() {
	return name;
}

public void setName(String name) {
	this.name = name;
} 

}

class EscapeTower{
private String name;

public EscapeTower(String name) { 
	super();
	this.name = name;
}

public String getName() {
	return name;
}

public void setName(String name) {
	this.name = name;
} 

}
//------------------------添加方法后的调用-------------
package java_232_GOF23设计模式_建造者模式详解_练习;
/**

  • 测试类
    */
    public class Client {//Client客户端
    public static void main(String[] args) {
    //获取装配者和构建者
    AirShipDirector director = new SxtAirShipDirector(new SxtAirShipBuilder());
    //通过装配者获取飞船属性
    AirShip ship = director.directAirShip();
    //获取内容
    System.out.println(ship.getEngine().getName());
    System.out.println(ship.getEscapeTower().getName());
    System.out.println(ship.getOrbitalModule().getName());

     //添加其他方法  调用
     ship.launch();
    

    }

}
//结果----------------------------

类图
在这里插入图片描述
类图
在这里插入图片描述建造者模式
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值