(5)设计模式之建造者模式(创建型模式)

来源:互联网 发布:淘宝迅雷会员卡密 编辑:程序博客网 时间:2024/06/06 19:23

声明:以下都是博主浅薄的经验之谈,欢迎大家学习交流

  • 博主是参考这个视频进行学习总结的,如阅读不懂可参看本视频哦!
    • 设计模式学习视频(点击我)
    • 提取码 : ivtk
  • 先看类图

这里写图片描述

  • 客户端代码
    • Main.java
public class Main {    public static void main(String[] args) {        /**引入建造者模式的场景**/        /**1.客户端创建房子最普通方式是如下,如果每次要创建不同的房子的话,就必须类似这样进行创建*/        /**缺点:客户端的代码要不断的动,不利于维护**/        House house = new House();        house.setFloor("普通地板");        house.setWall("普通墙");        house.setRoof("普通房顶");        House h1 = new House();        h1.setFloor("中等地板");        h1.setWall("中等墙");        h1.setRoof("中等房顶");        /**2.增加了一个建造房子的工程队**/        /**缺点:**/        HouseBuilder commonBuilder = new CommonBuilder();        commonBuilder.makeFloor();        commonBuilder.makeRoof();        commonBuilder.makeWall();        House h2 = commonBuilder.getHouse();        System.out.println(h2);        /**3.增加一个管理者(指导工程队进行设计)【引入建造者模式】**/        /**对于后期如果要创建一个中等房子的话,只需要实现houseBuilder接口,创建出一个             MediumBuilderm,交给designer即可**/        /**分离了在客户端代码中去创建不同类别的House对象,代码数量动得少了**/        Designer designer = new Designer();        HouseBuilder builder = new CommonBuilder();        designer.designHouse(builder);        House h3 = builder.getHouse();        System.out.println(h3);        ///        HouseBuilder mediumBuilder = new MediumBuiler();        designer.designHouse(mediumBuilder);        House h4 = mediumBuilder.getHouse();        System.out.println(h4);    }}
  • House.java
public class House {    private String floor;    private String wall;    private String roof;    public String getFloor() {        return floor;    }    public void setFloor(String floor) {        this.floor = floor;    }    public String getWall() {        return wall;    }    public void setWall(String wall) {        this.wall = wall;    }    public String getRoof() {        return roof;    }    public void setRoof(String roof) {        this.roof = roof;    }    @Override    public String toString() {        return "House [floor=" + floor + ", wall=" + wall + ", roof=" + roof + "]";    }}
  • HouseBuilder.java
public interface HouseBuilder {    public void makeFloor();    public void makeRoof();    public void makeWall();    public House getHouse();}
  • CommonBuilder.java
public class CommonBuilder implements HouseBuilder{    private House house = new House();    @Override    public void makeFloor() {        house.setFloor("普通地板");    }    @Override    public void makeRoof() {        house.setRoof("普通房顶");    }    @Override    public void makeWall() {        house.setWall("普通墙壁");    }    /**     * 得到房子     * @return     */    public House getHouse(){        return house;    }}
  • MediumBuiler.java
public class MediumBuiler implements HouseBuilder {    private House house = new House();    @Override    public void makeFloor() {        house.setFloor("中等地板");    }    @Override    public void makeRoof() {        house.setRoof("中等房顶");    }    @Override    public void makeWall() {        house.setWall("中等墙");    }    @Override    public House getHouse() {        return house;    }}
  • Designer.java
/** * 描述:设计者里管理工程队来进行建造房子 */public class Designer {public void designHouse(HouseBuilder houseBuilder){    houseBuilder.makeFloor();    houseBuilder.makeRoof();    houseBuilder.makeWall();}}

声明:以上都是博主浅薄的经验之谈,欢迎大家学习交流

  • 博主是参考这个视频进行学习总结的:
    • 设计模式学习视频(点击我)
    • 提取码 : ivtk
阅读全文
0 0
原创粉丝点击