当先锋百科网

首页 1 2 3 4 5 6 7

1 背景回顾

设计模式是一种思维方式,前人总结的最佳实践,也是一种态度,一种进步。
软件过程里面设计模式一共有23种,一般分为3类。即创建型,结构性型,行为型。其中:
****创建型5种: **** 解决了创建对象的烦恼
单例模式,工厂模式,抽象工厂模式,建造者模式,原型模式

结构性型7种: 解决了如何让类组合起来完成复杂的功能
适配器模式,桥接模式,装饰模式,组合模式,外观模式,享元模式,代理模式,

行为型11种: 解决了类之间的控制关系。
模版方法模式,命令模式,迭代器模式,观察者模式,中介者模式,备忘录模式,状态模式,策略模式,职责链模式,访问者模式,解释器模式。

如果想要学习并掌握这些设计模式,最好是编码和画图理解。

简单工厂:## 1 背景回顾

设计模式是一种思维方式,前人总结的最佳实践,也是一种态度,一种进步。
软件过程里面设计模式一共有23种,一般分为3类。即创建型,结构性型,行为型。其中:
**创建型5种: ** 解决了创建对象的烦恼
单例模式,工厂模式,抽象工厂模式,建造者模式,原型模式

结构性型7种: 解决了如何让类组合起来完成复杂的功能
适配器模式,桥接模式,装饰模式,组合模式,外观模式,享元模式,代理模式,

行为型11种: 解决了类之间的控制关系。
模版方法模式,命令模式,迭代器模式,观察者模式,中介者模式,备忘录模式,状态模式,策略模式,职责链模式,访问者模式,解释器模式。

如果想要学习并掌握这些设计模式,最好是编码和画图理解。

2 创建者模式

在这里插入图片描述

在这里插入图片描述
需要定义好4个角色:
bulider,product,worker,director

package com.yang.create.builder;

public interface Build {
    void BuildA();//打地基
    void BuildB();//钢筋
    void BuildC();//铺电线
    void BuildD();//搞粉刷

    Product getProduct();
}

具体的产品

package com.yang.create.builder;

public class Product {
    private  String buildA;
    private  String buildB;
    private  String buildC;
    private  String buildD;

    @Override
    public String toString() {
        return super.toString();
    }

    public String getBuildA() {
        return buildA;
    }

    public void setBuildA(String buildA) {
        this.buildA = buildA;
    }

    public String getBuildB() {
        return buildB;
    }

    public void setBuildB(String buildB) {
        this.buildB = buildB;
    }

    public String getBuildC() {
        return buildC;
    }

    public void setBuildC(String buildC) {
        this.buildC = buildC;
    }

    public String getBuildD() {
        return buildD;
    }

    public void setBuildD(String buildD) {
        this.buildD = buildD;
    }

}

工人生产产品:

package com.yang.create.builder;
//工人
public class Worker implements Build{


    private  Product product;
    public Worker( ) {
        this.product = new Product();
    }

    @Override
    public void BuildA() {
        product.setBuildA("打地基");
        System.out.println("打地基");
    }
    @Override
    public void BuildB() {
        product.setBuildB("铺电线");
        System.out.println("铺电线");
    }
    @Override
    public void BuildC() {
        product.setBuildC("钢筋");
        System.out.println("钢筋");
    }
    @Override
    public void BuildD() {
        product.setBuildD("搞粉刷");
        System.out.println("搞粉刷");
    }

    @Override
    public Product getProduct() {
        return product;
    }
}

指挥者定义步骤
package com.yang.create.builder;

import javafx.util.Builder;

//指挥者,去指挥如何去构建一个工程的步骤,指挥工人去做
public class Director {

public Product build(Worker worker){
    worker.BuildA();
    worker.BuildC();
    worker.BuildB();
    return  worker.getProduct();

}
}

测试:

```java
package com.yang.create.builder;

public class Test {

    public static void main(String[] args) {
        //指挥大人
        Director director = new Director();
        //指挥工人做事情
       Product product = director.build(new Worker());
        System.out.println(product.toString());
    }
}

测试结果:
在这里插入图片描述
只需要在指挥者那里改变执行顺序即可:4个步骤都执行(先刷粉)
在这里插入图片描述

在这里插入图片描述

主要是理解4个角色之间的关系。