zoukankan      html  css  js  c++  java
  • 建造者模式(屌丝专用)

    屌丝有了钱仅仅是用来花的,那得有些霸气一点的房子吧!

    意图:将一个复杂对象的构建与它的表示分离。使得相同的构建过程能够创建不同的表示。

    适用性:

    1、房子有不同的几个部分。能独立的安装

    2、希望能建造出多个不同表象的房子

    大家先看个类图


    1.Builder

    为创建一个Product对象的各个部件指定抽象接口。

    2.ConcreteBuilder

    实现Builder的接口以构造和装配该产品的各个部件。

    定义并明白它所创建的表示。

    提供一个检索产品的接口。

    3.Director

    构造一个使用Builder接口的对象。

    4.Product

    表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程。

    包括定义组成部件的类。包括将这些部件装配成终于产品的接口。


    如今要建的是房子House。有个喜欢的家。

    package creatingtype.builder;
    
    /*
     * 房子
     */
    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;
        }
    
    }

    预定project队(不同的project队建不同的房子)

    package creatingtype.builder;
    
    /*
     * project队
     */
    public interface HouseBuilder {
    
        //建造地板
        public void makeFloor();
    
        //建造墙
        public void makeWall();
    
        //建造屋顶
        public void makeHousetop();
    
        public House getHouse();
    }
    

    找个负责人

    package creatingtype.builder;
    
    public class HouseDirector {
    
        public void makeHouse(HouseBuilder builder) {
            //建造地板
            builder.makeFloor();
            //建造墙
            builder.makeWall();
            //建造屋顶
            builder.makeHousetop();
        }
    
    }
    
    负责人有了。假设你想建造别墅。确定别墅project队

    package creatingtype.builder;
    
    /*
     * 别墅project队
     */
    public class BieShuBuilder 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;
        }
    
    }
    负责人有了,假设你想建造豪宅,确定豪宅project队

    package creatingtype.builder;
    
    /*
     * 豪宅project队
     */
    public class HaoZhaiBuilder implements HouseBuilder {
    
        House house = new House();
    
        public House getHouse() {
            return house;
        }
    
        public void makeFloor() {
            house.setFloor("豪宅-->地板");
        }
    
        public void makeHousetop() {
            house.setHousetop("豪宅-->房顶");
        }
    
        public void makeWall() {
            house.setWall("豪宅-->墙");
        }
    
    }
    
    都好了。你能够開始修建自己想要的家了。

    package creatingtype.builder;
    
    // 建造者模式
    public class MainClass {
    
        //    Builder模式也叫建造者模式或者生成器模式,
        //    是由GoF提出的23种设计模式中的一种。Builder模式是一种对象创建型模式之中的一个,用来
        //    隐藏复合对象的创建过程,它把复合对象的创建
        //    过程加以抽象。通过子类继承和重载的方式,动
        //    态地创建具有复合属性的对象。
    
        public static void main(String[] args) {
            //project队
            HouseBuilder builder = new HaoZhaiBuilder();
            //设计者
            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());
        }
    
    }
    

    就这么简单,豪宅好了,你也能够建别墅哦!



  • 相关阅读:
    操作系统学习笔记 003 安装SourceInsight
    操作系统学习笔记 002 安装NASM
    操作系统学习笔记 001 安装Ubuntu
    ATmega8仿真——键盘扫描的学习
    Open-Drain&Push-Pull
    ATmega8仿真——LED 数码管的学习
    SSD固态硬盘的GC与Trim
    前缀、中缀、后缀表达式
    动态规划解决01背包问题
    javascript 获取图片原始尺寸
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5349135.html
Copyright © 2011-2022 走看看