前言
今天接到一个需求,是对 订单做一些监控。比如有提货监控、送货监控、出库监控。每一种类型的监控,都有很多相应的 字段需要去填充 相应的值
Java设计模式:将一个复杂对象的构建与它的 表示分离,使用同样的构建可以创建不同的表示。
适合该模式的情景:对象结构复杂,利用单纯的构造方法无法满足描述该对象的需求,对象创建过程独立于创建该对象的类。
public static class Order {
private Method1 method1;
private Method2 method2;
private Method3 method3;
}
比如创建上面这个 Order 对象,需要经历 method1、method2、method3 三个方法,已经方法内部的逻辑,这种对象的创建就比较符合用 设计模式-生成器模式 去做
生成器模式
生成器模式也成为建造者模式,生成器模式的意图在于将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。在软件设计中,有时候面临一个非常复杂的对象的创建工作。这个发杂的对象通常可以分成几个较小的部分,由各个子对象组合出这个复杂对象的过程相对来说比较稳定,但是子对象的创建过程各不相同并且可能面临变化。
实现步骤
(1). 定义一个生成器接口,里面分别是去构建 Order 类三个属性的方法。
public interface IControlBuild<T> {
public void buildMethod1();
public void buildMethod2();
public void buildMethod3();
//混合三个方法的构建,返回 Order 对象
public T composite();
}
(2).定义一个生成器类:
如果以后有针对其他的监控,也可以实现 IControlBuild 接口就行。
public class OrderGenerator implements IControlBuild<Order> {
//order是成员变量
Order order= new Order();
@Override
public void buildMethod1(){
// build order by buildMethod1
}
@Override
public void buildMethod2(){
//你的逻辑
// build order by buildMethod1
}
@Override
public void buildMethod3(){
//你的逻辑
// build order by buildMethod1
}
//混合三个方法的构建,返回 Order 对象
public Order composite(){
//你的逻辑
}
}
composite 方法是用泛型,只是为了提高扩展性,以后可能还有别的其他的监控对象需要被构建,就可以这样文章来源:https://www.toymoban.com/news/detail-495831.html
public class Other1Generator implements IControlBuild<Other1> {
//order是成员变量
Other1 other1= new Other1();
@Override
public void buildMethod1(){
// build other1 by buildMethod1
}
@Override
public void buildMethod2(){
//你的逻辑
// build other1 by buildMethod1
}
@Override
public void buildMethod3(){
//你的逻辑
// build other1 by buildMethod1
}
//混合三个方法的构建,返回 Order 对象
public Other1 composite(){
//你的逻辑
}
}
(3).最后定义一个调度类,统一把 IControlBuild 接口的方法都调用起来。当然如果没有定义这个统一的调度类,那么你就需要在构建对象的时候,逐一去调用 IControlBuild 三个构建方法,但不建议这么去做文章来源地址https://www.toymoban.com/news/detail-495831.html
public class ControlHandler<T> {
private final IControlBuild<T> build;
public ControlHandler(IControlBuild<T> build) {
this.build = build;
}
//这个指挥类有一个build方法,在该方法中调用 接口的所有方法 生成
public T build() {
build.buildMethod1();
build.buildMethod2();
build.buildMethod3();
return build.composite();
}
//写个main方法简单测试一下
public static void main(String[] args) {
IControlBuild build = new OrderGenerator<Order>();
ControlHandler<Order> handler= new ControlHandler(build);
Order order = handler.build();
System.out.println(order);
}
}
到了这里,关于Java设计模式-生成器模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!