zoukankan      html  css  js  c++  java
  • Java设计模式之建造者模式

    一、什么是建造者模式?

    Bulider模式又叫建造者模式,或者生成器模式。其属于创建型模式的一种。用来隐藏符合对象的创建过程。他把符合对象的创建过程进行了抽象。通过子类继承和重载的方式,动态的创建具有复合属性的对象。

    二、建造模式的结构

    三、建造模式的应用场景

    - 对象的创建:Builder模式是为对象的创建而设计的模式
    - 创建的是一个复合对象:被创建的对象为一个具有复合属性的复合对象
    - 关注对象创建的各部分的创建过程:不同的工厂(这里指builder生成器)对产品属性有不同的创建方法
    四、实现

    House

    /*
     * 房子
     */
    public class House {
        // 地板
        private String floor;
        //
        private String wall;
        // 屋顶
        private String housetop;
    
        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 getHousetop() {
            return housetop;
        }
    
        public void setHousetop(String housetop) {
            this.housetop = housetop;
        }
    
    }

    HouseBuilder

    /*
     * 工程队
     */
    public interface HouseBuilder {
        //修地板
        public void makeFloor();
        //修墙
        public void makeWall();
        //修屋顶
        public void makeHousetop();
        public House getHouse();
    }
    PingFangBuilder 
    /*
     * 平房工程队
     */
    
    public class PingFangBuilder implements HouseBuilder {
        House house = new House();
        
        public void makeFloor() {
            house.setFloor("平房-->地板");
        }
    
        public void makeHousetop() {
            house.setHousetop("平房-->房顶");
        }
    
        public void makeWall() {
            house.setWall("平房-->墙");
        }
    
        public House getHouse() {
            return house;
        }
    
    }

    HouseDirector

    public class HouseDirector {    
        
        public void makeHouse(HouseBuilder builder) {
            builder.makeFloor();
            builder.makeWall();
            builder.makeHousetop();
        }
        
    }

    测试类

    public class MainClass {
    
        public static void main(String[] args) {
        
            
            //由工程队来修
            HouseBuilder builder = new GongyuBuilder();
            //设计者来做
            HouseDirector director = new HouseDirector();
            director.makeHouse(builder);
            
            House house = builder.getHouse();
            System.out.println(house.getFloor());
            System.out.println(house.getWall());
            System.out.println(house.getHousetop());
        }
    
    }
  • 相关阅读:
    阻止事件冒泡和默认行为,禁止键盘事件
    jquery移除、绑定、触发元素事件
    HTML`CSS_网站页面不同浏览器兼容性问题解决
    computed属性与methods、watched
    call()方法和apply()方法用法总结
    push()、shift()与pop()、unshift()、splice()
    vue指令总结
    fieldset标签
    mysql存储过程定义者
    数据库死锁
  • 原文地址:https://www.cnblogs.com/LT0314/p/3897509.html
Copyright © 2011-2022 走看看