美文网首页程序员
建造者模式简介

建造者模式简介

作者: eb6684925911 | 来源:发表于2018-09-10 23:39 被阅读22次

    本文介绍了建造者模式并附有java代码实现demo。内容仅供参考使用,有不足之处请及时指出,也欢迎大家交流探讨。

    建造者模式

    建造者模式是创建型模式的一种,其隐藏了构建对象的具体过程。

    场景

    假设你需要一座房子,而建造房子需要很多流程,很多工作,但你并不需要关心这些,你只需将你想要的房子告诉承包商即可,承包商会将房子建设好。这种场景可以使用建造者模式。

    示例

    假设房子由地基,框架,墙体,顶部构成。

    public class House {
    
        private String base;
        private String frame;
        private String wall;
        private String top;
    
        public String getBase() {
            return base;
        }
    
        public void setBase(String base) {
            this.base = base;
        }
    
        public String getFrame() {
            return frame;
        }
    
        public void setFrame(String frame) {
            this.frame = frame;
        }
    
        public String getWall() {
            return wall;
        }
    
        public void setWall(String wall) {
            this.wall = wall;
        }
    
        public String getTop() {
            return top;
        }
    
        public void setTop(String top) {
            this.top = top;
        }
    
        @Override
        public String toString() {
            return "House{" +
                    "base='" + base + '\'' +
                    ", frame='" + frame + '\'' +
                    ", wall='" + wall + '\'' +
                    ", top='" + top + '\'' +
                    '}';
        }
    }
    

    房子建造抽象类

    abstract class HouseBuilder {
    
        protected House house = new House();
    
        public abstract void buildBase();
    
        public abstract void buildFrame();
    
        public abstract void buildWall();
    
        public abstract void buildTop();
    }
    

    平房建造类

    public class BungalowHouseBuilder extends HouseBuilder {
    
        @Override
        public void buildBase() {
            house.setBase("平房地基");
        }
    
        @Override
        public void buildFrame() {
            house.setFrame("平房框架");
        }
    
        @Override
        public void buildWall() {
            house.setWall("平房墙体");
        }
    
        @Override
        public void buildTop() {
            house.setTop("平房顶部");
        }
    }
    

    别墅建造类

    public class VillaHouseBuilder extends HouseBuilder {
    
        @Override
        public void buildBase() {
            house.setBase("别墅地基");
        }
    
        @Override
        public void buildFrame() {
            house.setFrame("别墅框架");
        }
    
        @Override
        public void buildWall() {
            house.setWall("别墅墙体");
        }
    
        @Override
        public void buildTop() {
            house.setTop("别墅顶部");
        }
    }
    

    房屋建造导演类

    public class HouseBuildDirector {
    
        private HouseBuilder houseBuilder;
    
        public HouseBuildDirector(HouseBuilder houseBuilder) {
            this.houseBuilder = houseBuilder;
        }
    
        public House buildHose() {
    
            houseBuilder.buildBase();
            houseBuilder.buildFrame();
            houseBuilder.buildWall();
            houseBuilder.buildTop();
            return houseBuilder.house;
        }
    }
    

    告知承包商建造一座平房。

    BungalowHouseBuilder bungalowHouseBuilder = new BungalowHouseBuilder();
    HouseBuildDirector houseBuildDirector = new HouseBuildDirector(bungalowHouseBuilder);
    House house = houseBuildDirector.buildHose();
    
    System.out.println(house.toString());
    

    输出

    House{base='平房地基', frame='平房框架', wall='平房墙体', top='平房顶部'}
    

    建造者模式结构

    建造者模式主要分为Builder和Director两大模块。

    Builder负责构建各个模块。

    Director负责组建各个模块。

    相关文章

      网友评论

        本文标题:建造者模式简介

        本文链接:https://www.haomeiwen.com/subject/juxegftx.html