首页 > 编程语言 >java23设计模式创建者模式

java23设计模式创建者模式

时间:2023-04-05 11:01:00浏览次数:44  
标签:Engine java23 return String 创建者 builder 设计模式 public name

package com.bjsxt.builder;

/**
 * 尚学堂牌宇宙飞船
 * @author 尚学堂高淇 www.sxt.cn
 *
 */
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;
    }
    
    
    
}

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;
    }
    
}
AirShip
package com.bjsxt.builder;


public interface AirShipBuilder {
    Engine builderEngine();
    OrbitalModule builderOrbitalModule();
    EscapeTower  builderEscapeTower();
}
AirShipBuilder
package com.bjsxt.builder;


public class SxtAirShipBuilder implements AirShipBuilder {
    //StringBuilder, 以后学习XML解析中,JDOM库中的类:DomBuilder,SaxBuilder
    @Override
    public Engine builderEngine() {
        System.out.println("构建尚学堂牌发动机!");
        return new Engine("尚学堂牌发动机!");
    }

    @Override
    public EscapeTower builderEscapeTower() {
        
        System.out.println("构建逃逸塔");
        return new EscapeTower("尚学堂牌逃逸塔");
    }

    @Override
    public OrbitalModule builderOrbitalModule() {
        System.out.println("构建轨道舱");
        return new OrbitalModule("尚学堂牌轨道舱");
    }    
    
}
SxtAirShipBuilder
package com.bjsxt.builder;

public interface AirShipDirector {
    
    /**
     * 组装飞船对象
     * @return
     */
    AirShip   directAirShip();
    
}
AirShipDirector
 package com.bjsxt.builder;

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;
    }

}
SxtAirshipDirecto
package com.bjsxt.builder;

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();
        
    }
}
Client

 

标签:Engine,java23,return,String,创建者,builder,设计模式,public,name
From: https://www.cnblogs.com/ou-pc/p/17288970.html

相关文章

  • 设计模式(三十一)----综合应用-自定义Spring框架-自定义Spring IOC-定义解析器、IOC容
    3定义解析器相关类3.1BeanDefinitionReader接口BeanDefinitionReader是用来解析配置文件并在注册表中注册bean的信息。定义了两个规范:获取注册表的功能,让外界可以通过该对象获取注册表对象。加载配置文件,并注册bean数据。/***@versionv1.0*@ClassName:BeanDe......
  • 《大话设计模式》程杰
    我时常拿程序员的成长与足球运动员的成长做对比。GoF的《设计模式》好比是世界顶级足球射门集锦,《重构》、《敏捷软件开发》、《设计模式解析》好比是一场场最精彩的足球比赛。我为之疯狂,为之着迷。可是我并不只是想做一个球迷(软件使用者),而是更希望自己能成为一个足球运动员(软......
  • 重学Java设计模式-结构型模式-代理模式
    重学Java设计模式-结构型模式-代理模式内容摘自:https://bugstack.cn/md/develop/design-pattern/2020-06-16-重学Java设计模式《实战代理模式》.html#重学-java-设计模式-实战代理模式「模拟mybatis-spring中定义dao接口-使用代理类方式操作数据库原理实现场景」代理模式介绍......
  • 谈谈Spring中都用到了哪些设计模式?
    ​ 控制反转(IOC)和依赖注入(DI)IoC(InversionofControl,控制翻转) 是Spring中一个非常非常重要的概念,它不是什么技术,而是一种解耦的设计思想。它的主要目的是借助于“第三方”(即Spring中的IOC容器)实现具有依赖关系的对象之间的解耦(IOC容易管理对象,你只管使用即可),从而......
  • 谈谈Spring中都用到了哪些设计模式?
    ​ 控制反转(IOC)和依赖注入(DI)IoC(InversionofControl,控制翻转) 是Spring中一个非常非常重要的概念,它不是什么技术,而是一种解耦的设计思想。它的主要目的是借助于“第三方”(即Spring中的IOC容器)实现具有依赖关系的对象之间的解耦(IOC容易管理对象,你只管使用即可),从而......
  • 装饰设计模式-java
      packagecn.shuishandt.opp;publicclassDecorateTest2{publicstaticvoidmain(String[]args){ Coffecoffe=newCoffe(); System.out.println(coffe.cost()+"=============>"+coffe.info()); Milkmilk=newMilk(coffe);......
  • 重学Java设计模式-结构型模式-享元模式
    重学Java设计模式-结构型模式-享元模式内容摘自:https://bugstack.cn/md/develop/design-pattern/2020-06-14-重学Java设计模式《实战享元模式》.html#重学-java-设计模式-实战享元模式「基于redis秒杀-提供活动与库存信息查询场景」享元模式介绍图片来自:https://refactorin......
  • 设计模式(三十)----综合应用-自定义Spring框架-自定义Spring IOC-定义bean、注册表相
    现要对下面的配置文件进行解析,并自定义Spring框架的IOC对涉及到的对象进行管理。<?xmlversion="1.0"encoding="UTF-8"?><beans>  <beanid="userService"class="com.itheima.service.impl.UserServiceImpl">    <propertyname=&qu......
  • 前端设计模式——依赖注入模式
    依赖注入模式(DependencyInjectionPattern):允许我们通过将对象的依赖关系从代码中分离出来,从而使代码更加模块化和可重用。在传统的编程模式中,一个对象可能会直接创建或......
  • 第一章 设计模式 - 基础概念
    什么是设计模式1、所谓设计模式就是一种可复用的解决方案,用于解决软件设计中遇到的常见问题。2、所谓设计模式就是在不同业务情况下,要如何去解决问题的一种方案,......