杨居易的设计模式之------------ 建造者模式----------捏脸篇

**

建造者模式

**

1.是什么

先来说下官方定义:指将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示.它是将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成。它将变与不变相分离,即产品的组成部分是不变的,但每一部分是可以灵活选择的。

其实就是DIY嘛,

2.用在哪

1.组装过电脑吧

由 主板、内存、硬盘、显卡、机箱、显示器、键盘、鼠标,萝卜等部件组装而成最少的钱做最多的事

在这里插入图片描述

2.打过游戏吧

从剑灵,天刀,骑马与砍杀2,捏脸系统都是一大主流,美的都大同小异,丑的那叫别具一格

  • 创建的对象较复杂,由多个部件构成,各部件面临着复杂的变化,但构件间的建造顺序是稳定的。
  • 创建复杂对象的算法独立于该对象的组成部分以及它们的装配方式,即产品的构建过程和最终的表示是独立的。

3.结构

建造者(Builder)模式由产品、抽象建造者、具体建造者、指挥者等 4 个要素构成,现在我们来分析其基本结构和实现方法。

1. 模式的结构

建造者(Builder)模式的主要角色如下。

  1. 产品角色(Product):它是包含多个组成部件的复杂对象,由具体建造者来创建其各个滅部件。

  2. 抽象建造者(Builder):它是一个包含创建产品各个子部件的抽象方法的接口,通常还包含一个返回复杂产品的方法 getResult()。

  3. 具体建造者(Concrete Builder):实现 Builder 接口,完成复杂产品的各个部件的具体创建方法。

  4. 指挥者(Director):它调用建造者对象中的部件构造与装配方法完成复杂对象的创建,在指挥者中不涉及具体产品的信息。

在这里插入图片描述

4.怎么用

现场捏脸

Product

//产品角色
public class Person {
    private String eyes;//眼
    private String ears;//耳
    private String mouth;//口
    private String nose;//鼻

    public void setEyes(String eyes) {
        this.eyes = eyes;
    }

    public void setNose(String nose) {
        this.nose = nose;
    }

    public void setMouth(String mouth) {
        this.mouth = mouth;
    }

    public void setEars(String ears) {
        this.ears = ears;
    }

    public void display()
    {
        //显示容貌
    }
}

抽象建造者 bulid

public abstract class Builder {
    //创建对象
    Person person=new Person();
    public abstract void bulideyes();
    public abstract void bulidears();
    public abstract void bulidmouth();
    public abstract void bulidnose();
    public Person getresult(){
        return new Person();//获取结果
    }
}

具体建造者 ConcerteBuilder

public class ConcerteBuilder extends Builder {
    @Override
    public void bulideyes() {
        person.setEars("组装上卡姿兰大眼睛");
        System.out.println("组装上卡姿兰大眼睛");
    }

    @Override
    public void bulidears() {
        person.setEyes("组装精灵一般的耳朵");
        System.out.println("组装精灵一般的耳朵");
    }

    @Override
    public void bulidmouth() {
        person.setMouth("组装樱桃小嘴巴");
        System.out.println("组装樱桃小嘴巴");
    }

    @Override
    public void bulidnose() {
        person.setNose("组装高挺大鼻梁");
        System.out.println("组装高挺大鼻梁");
    }
}

玩家 指挥者 Director

//游戏玩家,具体指挥者
public class Director {
    private  Builder builder;
    public Director(Builder builder) {
        this.builder = builder;
    }

    //角色构建与组装方法
    public Person construct() {
        builder.bulidears();
        builder.bulideyes();
        builder.bulidmouth();
        builder.bulidnose();
        return builder.getresult();
    }
}

Main方法看看是个怎样的

public class Main {
    public static void main(String[] args) {
        Builder builder=new ConcerteBuilder();//下载客户端 按照自己需求捏脸
        Director director=new Director(builder);//进入界面
        Person result = director.construct();
        result.display();
    }
}

该模式的主要优点如下:

  1. 各个具体的建造者相互独立,有利于系统的扩展。
  2. 客户端不必知道产品内部组成的细节,便于控制细节风险。

其缺点如下:

  1. 产品的组成部分必须相同,这限制了其使用范围。
  2. 如果产品的内部变化复杂,该模式会增加很多的建造者类。

组装精灵一般的耳朵
组装上卡姿兰大眼睛
组装樱桃小嘴巴
组装高挺大鼻梁

在这里插入图片描述

拿错了,重来!!

5.为所欲为----建造者模式

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值