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个角色之间的关系。