当前位置: 移动技术网 > IT编程>软件设计>设计模式 > Java建造者模式

Java建造者模式

2018年12月18日  | 移动技术网IT编程  | 我要评论

建造者模式

建造者模式适用场景:

  建造一个复杂的对象适用,将构建对象的过程分开,每个类单独构造对象的一部分,最后组装起来,返回我们需要的对象。

下面的例子主要讲解构造一个飞船

demo: 

//要获得的对象,但是各个组件要拆分开,让对应的类去实现

class airship {
  private orbitamodule orbitamodule;//轨道舱
  private engine engine; //发动机
  private escapetower escapetower;//逃逸塔
  public orbitamodule getorbitamodule() {
    return orbitamodule;
  }
  public void setorbitamodule(orbitamodule orbitamodule) {
    this.orbitamodule = orbitamodule;
  }
  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;
  }
}

class orbitamodule{

  private string name;

  public string getname() {

    return name;

  }

  public void setname(string name) {

    this.name = name;

  }

  public orbitamodule(string name) {

    super();

  this.name = name;

  }

}

class engine{

  private string name;

  public string getname() {

    return name;

  }

  public void setname(string name) {

    this.name = name;

  }

  public engine(string name) {

    super();

    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 interface airshipbuilder {

 

  engine builderengine();
  orbitamodule builderorbitamodule();
  escapetower builderescapetower();
}

//创建返回对象的接口

public interface airshipdirector {
  airship directairship();
}

//组装对象的实现类

public class airshipbuilderimpl implements airshipbuilder{

  @override
  public engine builderengine() {
    system.out.println("构建发动机");
    return new engine("发动机");
  }

  @override
  public orbitamodule builderorbitamodule() {
    system.out.println("构建逃逸塔");
    return new orbitamodule("逃逸塔");
  }

  @override
  public escapetower builderescapetower() {
    system.out.println("构建轨道舱");
    return new escapetower("轨道舱");
  }
}

//返回对象的实现类

public class airshipdirectorimpl implements airshipdirector{

  //创建一个构造组件的接口对象,此处可以使用工厂模式进行修改

  private airshipbuilder airshipbuilder;

  public airshipdirectorimpl(airshipbuilder airshipbuilder) {
    super();
    this.airshipbuilder = airshipbuilder;
  }
  @override
  public airship directairship() {
    engine builderengine = airshipbuilder.builderengine();
    orbitamodule builderorbitamodule = airshipbuilder.builderorbitamodule();
    escapetower builderescapetower = airshipbuilder.builderescapetower();
    airship ship = new airship();
    ship.setengine(builderengine);
    ship.setescapetower(builderescapetower);
    ship.setescapetower(builderescapetower);
    return ship;
  }
}

//客户端调用

public class client {

  public static void main(string[] args) {
    airshipdirector airshipdirector = new airshipdirectorimpl(new airshipbuilderimpl());
    airship directairship = airshipdirector.directairship();
    system.out.println(directairship);
  }
}

建造者模式主要就是将建造飞船的过程简单的拆分开,让构建飞船的不同的组件让不同的类去完成,此处就可以和工厂模式和单例模式相结合,让开发变得更加清晰。

 

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网