Modbus的通訊引數存在flash中,如果改亂了,該怎麼辦--FreeModbus從站設計(12)
阿新 • • 發佈:2021-07-09
https://img2020.cnblogs.com/blog/1480523/202008/1480523-20200827214505601-457188157.png
建造者模式
建造者模式是將一個複雜物件的構建過程與它的表示分離,使得同樣的構建過程可以建立不同的表示,屬於建立型模式。
建造者模式的設計中主要有四個角色:
- 產品(Product):要建立的產品類物件;
- 建造者抽象(Builder):建造者的抽象類,規範產品物件的各個組成部分的建造,一般由子類實現具體的建造過程;
- 建造者(ConcreteBuilder):具體的Builder類,根據不同的業務邏輯,具體化物件的各個組成部分的建造;
- 呼叫者(Director):呼叫具體的建造者,來建立物件的各個部分,在指導者中不涉及具體產品的資訊,支付保證物件各部分完整建立或按某種順序建立。
建造者模式的基本寫法,以課程為例:
首先需要建立一個需要構造的產品類:
package com.jdwa.builder; import lombok.Data; @Data public class Course { private String name; private String ppt; private String video; private String note; private String homework; @Override public String toString() { return "Course{" + "name='" + name + '\'' + ", ppt='" + ppt + '\'' + ", video='" + video + '\'' + ", note='" + note + '\'' + ", homework='" + homework + '\'' + '}'; } }
具體的建造者:
package com.jdwa.builder; public class CourseBuilder { private Course course = new Course(); public void addName(String name){ course.setName(name); } public void addPPT(String ppt){ course.setPpt(ppt); } public void addVideo(String video){ course.setVideo(video); } public void addNote(String note){ course.setNote(note); } public void addHomework(String homework){ course.setHomework(homework); } public Course build(){ return course; } }
呼叫者:
package com.jdwa.builder;
public class Director {
public static void main(String[] args) {
CourseBuilder builder = new CourseBuilder();
builder.addNote("【課堂筆記】");
builder.addName("【設計模式】");
builder.addHomework("【課後作業】");
builder.addPPT("【PPT課件】");
builder.addVideo("【回放視訊】");
System.out.println(builder.build());
}
}
建造者模式的鏈式寫法:
將建造者改造一下即可
package com.jdwa.builder;
/**
* 可以先初始化一個或幾個引數
*/
public class CourseBuilder2 {
private Course course;
public CourseBuilder2(String name){
course = new Course();
course.setName(name);
}
public CourseBuilder2 addPPT(String ppt){
course.setPpt(ppt);
return this;
}
public CourseBuilder2 addVideo(String video){
course.setVideo(video);
return this;
}
public CourseBuilder2 addNote(String note){
course.setNote(note);
return this;
}
public CourseBuilder2 addHomework(String homework){
course.setHomework(homework);
return this;
}
public Course build(){
return course;
}
}
呼叫者如下:
package com.jdwa.builder;
public class Director {
public static void main(String[] args) {
Course course = new CourseBuilder2("【設計模式】")
.addNote("【課堂筆記】")
.addHomework("【課後作業】")
.addPPT("【PPT課件】")
.addVideo("【回放視訊】")
.build();
System.out.println(course);
}
}