建造者模式(Builder Pattern)的变种
- **原理**:传统的建造者模式是将一个复杂对象的构建过程和它的表示分离,使得同样的构建过程可以创建不同的表示。在一些变种中,会采用链式调用的方式来设置对象的各个属性。
* 例如,在构建一个复杂的汽车对象时,可能有品牌、颜色、配置等多个属性需要设置,通过链式调用可以这样构建:`CarBuilder builder = new CarBuilder(); Car car = builder.setBrand("Toyota").setColor("Blue").setConfiguration("High - end").build();`。这里的`CarBuilder`类中的`setBrand`、`setColor`等方法返回`this`(即`CarBuilder`对象本身),从而实现链式调用,最后通过`build`方法来生成最终的汽车对象。
- **优点**:这种链式调用方式使得对象的构建过程更加灵活和可读。用户可以根据自己的需求选择性地设置对象的属性,而且代码的顺序性能够清晰地展示对象构建的流程,就像在配置一个产品一样,一步一步地完成复杂对象的定制。
责任链模式(Chain of Responsibility Pattern)
- **原理**:责任链模式是为了处理请求而创建的多个对象组成的链,每个对象都有机会处理请求。在一些实现中,会采用链式设计来构建这个责任链。
* 例如,在一个审批系统中,有多个审批环节(如部门主管审批、经理审批、总经理审批),可以通过链式调用将这些审批环节连接起来。每个审批环节对象有一个`setNextHandler`方法,该方法返回自身(`this`),用于连接下一个审批环节,如:
DepartmentHeadApproval departmentHead = new DepartmentHeadApproval();
ManagerApproval manager = new ManagerApproval();
departmentHead.setNextHandler(manager).processRequest(request);
* 这里通过链式调用构建了一个审批链,当一个请求进来时,它会按照链的顺序依次经过各个审批环节,直到有一个环节处理完这个请求或者所有环节都无法处理。
- **优点**:这种链式设计使得责任链的构建更加灵活和直观。可以很方便地添加、删除或者重新排列责任链中的环节,而且在代码中能够清晰地看到各个环节之间的连接关系和顺序。
装饰器模式(Decorator Pattern)的链式装饰实现
- **原理**:装饰器模式是动态地给一个对象添加一些额外的职责。在链式设计的装饰器模式中,装饰器类的方法返回自身(`this`),这样就可以通过链式调用不断地给对象添加装饰。
* 例如,在一个咖啡点单系统中,咖啡是基础对象,有牛奶、糖、奶油等装饰选项。可以这样实现链式装饰:`Coffee coffee = new SimpleCoffee(); Coffee decoratedCoffee = coffee.addMilk().addSugar().addCream();`。这里的`addMilk`、`addSugar`、`addCream`等方法是装饰器类的方法,它们返回自身,使得可以不断地对咖啡对象进行装饰,每次装饰都会在原有的基础上添加新的功能或属性。
- **优点**:链式装饰的方式使得对象的功能扩展更加灵活和可组合。可以根据用户的需求灵活地添加或移除装饰,而且代码能够直观地展示出对象经过了哪些装饰和功能扩展。