这篇教程感觉很不错: Java设计模式:23种设计模式全面解析(超级详细)
首先看图,这个图也是来源于这个网站,表示感谢:
在互联网公司,产品都是由产品经理负责把控的。今天我就模拟项目经理做出产品的场景。我们发现不管是谁都服务于产品,也就是说产品是核心。
先看产品:
class Product {
// 需求调研
private String demandResearch;
// 产品设计
private String productDesign;
// 技术评估
private String technicalEvaluation;
// 开发
private String development;
// 测试
private String test;
// 交付
private String deliver;
public void setDemandResearch(String demandResearch) {
this.demandResearch = demandResearch;
}
public void setProductDesign(String productDesign) {
this.productDesign = productDesign;
}
public void setTechnicalEvaluation(String technicalEvaluation) {
this.technicalEvaluation = technicalEvaluation;
}
public void setDevelopment(String development) {
this.development = development;
}
public void setTest(String test) {
this.test = test;
}
public void setDeliver(String deliver) {
this.deliver = deliver;
}
public void show() {
System.out.println("随便看看");
}
}
抽象的项目经理:
abstract class ProjectManagerBuilder {
private Product product;
public ProjectManagerBuilder() {
this.product = new Product();
}
// 下面就是对每一项的把控阶段
public abstract void buildDemandResearch();
public abstract void buildProductDesign();
public abstract void buildTechnicalEvaluation();
public abstract void buildDevelopment();
public abstract void buildTest();
public abstract void buildDeliver();
public Product getProduct() {
return product;
}
}
接下来是指挥者了,可以理解为公司领导:
class Leader {
ProjectManagerBuilder builder;
Leader(ProjectManagerBuilder builder) {
this.builder = builder;
}
// 开始项目
public Product start() {
builder.buildDemandResearch();
builder.buildProductDesign();
builder.buildTechnicalEvaluation();
builder.buildDevelopment();
builder.buildTest();
builder.buildDeliver();
return builder.getProduct();
}
}
具体的项目经理了:
class Wu extends ProjectManagerBuilder {
@Override
public void buildDemandResearch() {
getProduct().setDemandResearch("好用的产品调研");
}
@Override
public void buildProductDesign() {
getProduct().setProductDesign("把产品设计好,要具有前瞻性和包容性,容错率应该高于百分之80");
}
@Override
public void buildTechnicalEvaluation() {
getProduct().setTechnicalEvaluation("使用成熟的技术方案,根据产品给出的未来设计好");
}
@Override
public void buildDevelopment() {
getProduct().setDevelopment("慢慢开发,开发好,不能以后老是打补丁");
}
@Override
public void buildTest() {
getProduct().setTest("要把每一个流程都测试好");
}
@Override
public void buildDeliver() {
getProduct().setDeliver("报告老板,项目完成了");
}
}
接下来就是测试了:
public static void main(String[] args) {
Wu wu = new Wu();
Leader leader = new Leader(wu);
Product product = leader.start();
product.show();
}
之所以先学习这个,因为我知道 okhttp ,好像就是使用的这个。当然以后各种设计模式都会学习,只不过学习了不用很快就忘了,我会重点学习跟工作相关的。