首页 > 其他分享 >设计模式-建造者模式

设计模式-建造者模式

时间:2022-08-27 23:11:45浏览次数:48  
标签:String void 建造 System 模式 houseBuilder Override 设计模式 public

//1.定义产品
//2.抽象构造者,定义抽象方法
//3.具体建造者,生产具体的建造方法
//4.指挥者,负责生产具体的产品

package com.serlyf.builder;

//产品
public class House {
private String basic;
private String wall;
private String roofed;

public void setBasic(String basic) {
    this.basic = basic;
}

public void setWall(String wall) {
    this.wall = wall;
}

public void setRoofed(String roofed) {
    this.roofed = roofed;
}

public String getBasic() {
    return basic;
}

public String getWall() {
    return wall;
}

public String getRoofed() {
    return roofed;
}

}

public abstract class HouseBuilder {
protected House house=new House();

//将建造的流程写好,抽象方法
public abstract void buildBasic();
public abstract void buildWall();
public abstract void buildRoofed();

//建造房子
public House buildHose(){
    return house;
}

}

public class CommonHouse extends HouseBuilder{
@Override
public void buildBasic() {
System.out.println("普通房子Basic....");
}

@Override
public void buildWall() {
    System.out.println("普通房子Wall....");
}

@Override
public void buildRoofed() {
    System.out.println("普通房子Roofed....");
}

}

public class HighHouse extends HouseBuilder{
@Override
public void buildBasic() {
System.out.println("高层房子Basic....");
}

@Override
public void buildWall() {
    System.out.println("高层房子Wall....");
}

@Override
public void buildRoofed() {
    System.out.println("高层房子Roofed....");
}

}

//指挥者
public class HouseDirecter {
HouseBuilder houseBuilder=null;

public HouseDirecter(HouseBuilder houseBuilder) {
    this.houseBuilder = houseBuilder;
}

public void setHouseBuilder(HouseBuilder houseBuilder) {
    this.houseBuilder = houseBuilder;
}

public House createHouse(){
    houseBuilder.buildBasic();
    houseBuilder.buildWall();
    houseBuilder.buildRoofed();
    return houseBuilder.buildHose();
}

}

public class BuilderDemo {
public static void main(String[] args) {
///需要创建普通房子
HighHouse highHouse=new HighHouse();
//指挥者
HouseDirecter houseDirecter=new HouseDirecter(highHouse);
//产出房子
House house=houseDirecter.createHouse();

}

}

标签:String,void,建造,System,模式,houseBuilder,Override,设计模式,public
From: https://www.cnblogs.com/NIAN2011/p/16631747.html

相关文章

  • 基本数据类型与严格模式和约束条件(3)
      整型 分类TINYINTSMALLINTMEDUIMINTINTBIGINT"""以TINYINT是否有符号默认情况下是带符号的超出会如何超出限制只存最大可接......
  • 第五章-DI反模式
    许多菜肴都需要用油在锅中烹饪食物。如果您不熟悉手头的食谱,则可以开始加热油,然后转身阅读食谱。但是一旦切完蔬菜,油就会冒出来。您可能会认为吸烟油意味着平底锅很热,可以......
  • Linux centos7 如何配置静态ip(Nat模式)
    今天来讲下如何在vmware虚拟机Nat网络下配置静态ip地址。......
  • Redis 集群模式
    概述Redis在3.0之后开始支持Cluster(集群)模式,特点如下:支持节点的自动发现:可向集群动态添加节点,并自动融入支持slave-master选举和容错:多个master宕机后,选举出......
  • 尚硅谷-设计模式篇
    ​ 只学了点理论概念,没有实操代码,感觉无论是项目架构、代码设计,还是团队人员管理,其实都是设计模式的具体落地实现。https://www.bilibili.com/video/BV1G4411c7N4?p=149&......
  • NetCore 入门 (五) : Options 模式
    1.QuickStartOptions模式可以说是Configuration的增强功能,Options模式存在的目的就是为了简化Configuration属性的读取和使用。但是从设计上讲,Options模式是完全独立的,有......
  • vim 模式切换与常用命令
    前两天涉及到在linux中新增,编辑文件,那么vim就是绕不过去的使用工具了,本篇主要记录vim的简单使用指南,有遇到新的使用方法在进一步补充。首先是vim的简单介绍:Vimisahigh......
  • 【AGC】AGC鉴权认证模式获取clientToken的方法
    ​近期有开发者在使用API方式接入Indexing服务时提出疑问,如何获取clientToken。其实AGC认证模式是基于clientToken鉴权方式,由云侧网关与AGC微服务实现的一套OAuth2标准鉴权......
  • 【线性模式】
    importnumpyasnpdefcompute_error_for_line_given_points(b,w,points):total_error=0foriinrange(0,len(points)):x=points[i,0]......
  • 路由器的两种工作模式
    路由器的两种模式:hash,historyrouter=>index.js:一.hash和history的区别:对于一个url来说,什么是hash值?——#及其后面的内容就是hash值。hash值不会包含在HTTP请求......