Builder en mode (constructeur)

Builder en mode (constructeur)

1) le modèle de générateur (Pattern Builder) appelé mode générateur, l'objet est une construction du modèle. Il peut être le processus de construction résumés d'objets complexes (classe abstraite), de sorte que les différentes mises en œuvre de ce processus abstrait peut construire des objets de différentes manifestations (attributs) de
2) le modèle de constructeur est une étape par étape pour créer un objet complexe, qui permet aux utilisateurs de uniquement en spécifiant le type et le contenu des objets complexes peut les construire, les utilisateurs ne ont pas besoin de connaître les détails spécifiques de la construction dans la colère

modéliste Quatre rôle

1) produit (rôles de produit): une cible de produit spécifique
2) Builder (constructeur abstrait): Créer un objet produit des différents composants de l'interface spécifiée / classe abstraite.
3) ConcreteBuilder ( en particulier constructeur): implémenter l'interface, la construction et l' assemblage de composants divers
4) Directeur (directeur): Construction d'un objet à l' aide de l'interface Builder. Il est principalement utilisé pour la création d' un objet complexe. Il se compose de deux fonctions, l' une: Isolat le processus de production et l'objet client, la seconde est la suivante : chargé de contrôler le processus de production de l' objet produit

De manière classique (couplage élevé)

AbstractHouse.java

package com.lucky.builder;

public abstract class AbstractHouse {

    //打地基
    public abstract void buildBaisic();
    //砌墙
    public abstract void buildwalls();
    //封顶
    public abstract void roofed();

    public void build(){
        buildBaisic();
        buildwalls();
        roofed();
    }
}

CommonHouse.java

package com.lucky.builder;

public class CommonHouse extends AbstractHouse {
    @Override
    public void buildBaisic() {
        System.out.println("普通房子打地基");
    }

    @Override
    public void buildwalls() {
        System.out.println("普通房子砌墙");
    }

    @Override
    public void roofed() {
        System.out.println("普通房子封顶");
    }

    @Override
    public void build() {
        super.build();
    }
}

Client.java

package com.lucky.builder;

public class Client {
    public static void main(String[] args) {
        CommonHouse ch = new CommonHouse();
        ch.build();
    }
}

Mode Builder

House.java

package com.lucky.builder2;

//产品->Product
public class House {
    private String baise;
    private String wall;
    private String roofed;

    public String getBaise() {
        return baise;
    }

    public void setBaise(String baise) {
        this.baise = baise;
    }

    public String getWall() {
        return wall;
    }

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

    public String getRoofed() {
        return roofed;
    }

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

HouseBuilder.java

package com.lucky.builder2;

//抽象的建造者
public abstract class HouseBuilder {

    protected House house = new House();
     //将建造的流程写好,抽象的方法
    public abstract void buildBasic();
    public abstract void buildWalls();
    public abstract void roofed();

    //建造好房子,将产品(房子)返回
    public House buildHouse() {
        return house;
    }
}

CommonHouse.java

package com.lucky.builder2;

public class CommonHouse extends HouseBuilder {

    @Override
    public void buildBasic() {
        System.out.println("普通房子打地基");
    }

    @Override
    public void buildWalls() {
        System.out.println("普通房子砌墙");
    }

    @Override
    public void roofed() {
        System.out.println("普通房子封顶");
    }
}

HeighBuilding.java

package com.lucky.builder2;

import com.lucky.builder2.HouseBuilder;

public class HeighBuilding extends HouseBuilder {
    @Override
    public void buildBasic() {
        System.out.println("高楼的打地基100米");
    }

    @Override
    public void buildWalls() {
        System.out.println("高楼的墙砌20cm");
    }

    @Override
    public void roofed() {
        System.out.println("高楼的透明屋顶");
    }
}

HouseDirector.java

package com.lucky.builder2;

import com.lucky.builder2.House;
import com.lucky.builder2.HouseBuilder;
//指挥者,这里去指定制作流程,返回产品
public class HouseDirector {
    HouseBuilder houseBuilder = null;

    //构造器传入houseBuilder
    public HouseDirector(HouseBuilder houseBuilder) {
        this.houseBuilder = houseBuilder;
    }

    //通过setter传入houseBuilder
    public void setHouseBuilder(HouseBuilder houseBuilder) {
        this.houseBuilder = houseBuilder;
    }

    //如何处理建造房子的流程,交给指挥者
    public House constractHouse(){
        houseBuilder.buildBasic();
        houseBuilder.buildWalls();
        houseBuilder.roofed();
        return houseBuilder.buildHouse();
    }
}

Client.java

package com.lucky.builder2;

public class Client {
    public static void main(String[] args) {
        //盖普通房子
        CommonHouse commonHouse = new CommonHouse();
        //准备创建房子的指挥者
        HouseDirector houseDirector = new HouseDirector(commonHouse);
//        完成盖房子,返回产品(房子)
        House house = houseDirector.constractHouse();

        HeighBuilding heighBuilding = new HeighBuilding();
        houseDirector.setHouseBuilder(heighBuilding);
        houseDirector.constractHouse();

    }
}
Publié 53 articles originaux · louange gagné 13 · vues 2276

Je suppose que tu aimes

Origine blog.csdn.net/qq_36821220/article/details/102832417
conseillé
Classement