建造者模式 「爱情、让人受尽委屈。」 2022-02-15 19:25 266阅读 0赞 ## 定义 ## 将一个复杂对象的构造与它的表示分离,是的同样的构建过程可以创建不同的表示。 类型:创建型 建造者模式与工厂模式有些类似: 建造者更注重:方法的调用顺序,关心创建的过程。 工厂更注重:创建产品,更关注产品结果本身。 ### 适用场景 ### 1、某个对象中存在较多复杂的属性 2、需要将对象的创建和使用进行分离 ### 优 ### 1、有着优良的封装性,创建和使用之间相互独立 2、拓展性好,类与类之间的解耦 ### 缺 ### 1、产生多余的Builder对象 2、产品内部发生修改,建造者就需要修改 -------------------- ## Coding ## 1、我们需要接口的形式,降低代码的耦合度。 已知,我们需要三种属性:food/rice/soup。且AMeal中的内容为将3个属性混合为一个套餐(整体)。 public interface InterfaceMealBuilder { void setFood(String food); void setRice(String rice); void setSoup(String soup); AMeal getAMeal(); } public class MealBuilder implements InterfaceMealBuilder { private AMeal aMeal = new AMeal(); @Override public void setFood(String food) { aMeal.setFood(food); } @Override public void setRice(String rice) { aMeal.setRice(rice); } @Override public void setSoup(String soup) { aMeal.setSoup(soup); } @Override public AMeal getAMeal() { return aMeal; } } 2、既然属于需要使用建造者模式,那么其本质应该是获取整个对象。但是建造的过程需要我们进行构建。 所以,我们在刚才的借口继承类中有其包装了整个接口的属性的新类AMeal作为返回。 public class AMeal { private String food; private String soup; private String rice; public String getFood() { return food; } public void setFood(String food) { this.food = food; } public String getSoup() { return soup; } public void setSoup(String soup) { this.soup = soup; } public String getRice() { return rice; } public void setRice(String rice) { this.rice = rice; } @Override public String toString() { return "AMeal{" + "food='" + food + '\'' + ", soup='" + soup + '\'' + ", rice='" + rice + '\'' + '}'; } } 3、如果已经做好了一个套餐,那么需要中间人将其推销/暴露接口给另一个人。所以创建了waiter,返回整个对面给未来的使用者。 public class Waiter { InterfaceMealBuilder lmb; public void makeBuilder(InterfaceMealBuilder lmb) { this.lmb = lmb; } public AMeal makeMeal(String food, String rice, String soup) { lmb.setFood(food); lmb.setRice(rice); lmb.setSoup(soup); return lmb.getAMeal(); } } 4、使用者可以根据自己的需求,定制套餐,套餐中的所有内容不是必须的。 public class FysTest { public static void main(String[] args) { Waiter w = new Waiter(); w.makeBuilder(new MealBuilder()); AMeal aMeal = w.makeMeal("1", "2", "3"); System.out.println(aMeal.toString()); } } -------------------- ## 改进 ## 可以看到刚才的建造者完成了所有东西的流程。但是其过程比较麻烦,复杂。许多框架代码中还有更简单的模式。链式调用: 链式调用的核心思想:使用了构建的方法(例如set)后,返回的是自己(this)。其内部类不是必要的。如果使用了内部类,那么外部的构造方法中需要将内部的参数映射到外部的属性中。链式调用也是属于工厂模式,其思想/过程更简单。 我们可以在很多的框架中看到此方法:Stringbuilder StringBuffer 。mybatis的数据连接构造等等。 public class NewMeal { private String food; private String soup; private String rice; public NewMeal(interMeal interMeal) { this.food = interMeal.food; this.soup = interMeal.soup; this.rice = interMeal.rice; } public static class interMeal { private String food; private String soup; private String rice; interMeal setFood(String food) { this.food = food; return this; } interMeal setRice(String rice) { this.rice = rice; return this; } interMeal setSoup(String soup) { this.soup = soup; return this; } NewMeal getInterMeal() { return new NewMeal(this); } } @Override public String toString() { return "NewMeal{" + "food='" + food + '\'' + ", soup='" + soup + '\'' + ", rice='" + rice + '\'' + '}'; } }
相关 建造者模式 定义 将一个复杂对象的构造与它的表示分离,是的同样的构建过程可以创建不同的表示。 类型:创建型 建造者模式与工厂模式有些类似: 建造者更注重:方法的调用顺序,关心创 「爱情、让人受尽委屈。」/ 2022年02月15日 19:25/ 0 赞/ 267 阅读
相关 建造者模式 [2019独角兽企业重金招聘Python工程师标准>>> ][2019_Python_] ![hot3.png][] 1、产品类 package com.hhdys r囧r小猫/ 2022年01月14日 22:37/ 0 赞/ 234 阅读
相关 建造者模式 建造者模式,又称为生成器模式,是一种较为复杂、使用频率不高的创建型模式。它为客户端返回的不是一个简单的产品,而是有多个部件组成的复杂产品。以手机为例,建造者模式返回的是一个完整 谁践踏了优雅/ 2021年12月10日 18:29/ 0 赞/ 240 阅读
相关 建造者模式 建造者模式 建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 柔光的暖阳◎/ 2021年09月29日 16:04/ 0 赞/ 314 阅读
相关 建造者模式 找商家买电脑: public class Computer { private String brand; private String s 拼搏现实的明天。/ 2021年09月24日 07:52/ 0 赞/ 357 阅读
相关 建造者模式 建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 一个 Buil 向右看齐/ 2021年09月17日 01:24/ 0 赞/ 354 阅读
相关 建造者模式 4.建造者模式 ![70][] class Customer { static void Main(string[] a 女爷i/ 2021年09月16日 23:52/ 0 赞/ 356 阅读
相关 建造者模式 建造者模式 1. 简介 2. 建造者模式介绍 2.1 定义 2.2 建造者模式的优点 2.3 建造者模式的缺点 ﹏ヽ暗。殇╰゛Y/ 2021年08月30日 22:18/ 0 赞/ 487 阅读
相关 建造者模式 一 点睛 将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naG 怼烎@/ 2021年07月24日 18:01/ 0 赞/ 410 阅读
相关 建造者模式 造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 一个 Bu... 小灰灰/ 2020年06月13日 05:36/ 0 赞/ 735 阅读
还没有评论,来说两句吧...