当前位置: 首页 > news >正文

网站如何做微信支付宝支付宝支付宝ppt免费模板下载网站有哪些

网站如何做微信支付宝支付宝支付宝,ppt免费模板下载网站有哪些,如何创办一个公众号,六安开发区网站文章目录 一、介绍二、应用三、案例1. 麦当劳11随心配2. 代码演示3. 演示结果 四、优缺点五、送给读者 一、介绍 建造者模式(Builder Pattern)属于创建型设计模式#xff0c;很多博客文章的对它的作用解释为用于将复杂对象的创建过程与其细节表示分离。但对于初学者来说… 文章目录 一、介绍二、应用三、案例1. 麦当劳11随心配2. 代码演示3. 演示结果 四、优缺点五、送给读者 一、介绍 建造者模式(Builder Pattern)属于创建型设计模式很多博客文章的对它的作用解释为用于将复杂对象的创建过程与其细节表示分离。但对于初学者来说这句话难免有点晦涩难懂何为复杂对象何为创建过程何为细节表示 复杂对象一个对象中的成员属性出了基本数据类型及其对应的封装类型还包含有其他类型对象。例如在对象A中包含对象B的引用对象B中又包含对象C的引用。 创建过程一个对象的实例化和初始化过程。如new一个对象后再调用其set方法为其初始化。 细节表示在对一个对象初始化时通过set方法表示其创建的细节。说白了细节表示就是该对象的成员变量。 在一般情况下我们要创建一个完整的对象时往往是通过两个步骤完成①实例化(即new一个对象)②初始化(即调用set方法对其属性赋值)。这是一种创建过程与细节表示耦合的情况。即一个对象的实例化和初始化过程就表示为其创建过程而在初始化过程中通过set方法我们又了解到了其内部属性(即细节表示)。 而在建造者模式中我们只需要通过一个对象的建造者(Builder)所提供的方法向其描述对象的细节该然后该建造者通过其核心方法build()将对象实例化并补充其细节。这就是建造者的核心思想。 二、应用 java中的StringBuilder类。我们通过其提供的各种重载的append()方法描述一个字符串的细节最后通过toString()方法获得String实例。OkHttp中应用了大量的建造者模式。如创建请求客户端时使用OkHttpClient的内部类Builder来描述请求的细节然后通过build()方法获得一个OkHttpClient实例。 三、案例 1. 麦当劳11随心配 我们以麦当劳随心配11套餐为例当用户选择该套餐时该套餐规定选择一个任意主食 一个任意冷饮。如下图所示 选择主食 选择冷饮 添加到购物车后我们可以看到该套餐详情 2. 代码演示 新建套餐抽象接口Meal以及实现该接口的随心配11套餐SuiXinPeiMeal public interface Meal {// 套餐价格Float getCost();// 套餐详情void order(); }public class SuiXinPeiMeal implements Meal{// 主食private Food food;// 冷饮private ColdDrink coldDrink;// 省略get、set方法...// 套餐价格Overridepublic Float getCost() {return 5F;}// 套餐详情Overridepublic void order() {System.out.println(随心配11套餐);System.out.println(主食 food.getName() 单价 food.getCost());System.out.println(冷饮 coldDrink.getName() 单价 coldDrink.getCost());System.out.println(套餐价格 getCost());} }新建一个随心配11套餐的创建者SuiXinPeiMealBuilder public class SuiXinPeiMealBuilder {private Food food;private ColdDrink coldDrink;// 向套餐中添加主食public void addFood(Food food) {this.food food;}// 向套餐中添加冷饮public void addColdDrink(ColdDrink coldDrink) {this.coldDrink coldDrink;}// 创建套餐public Meal build() {if (food null) {throw new RuntimeException(请选择一个主食);}if (coldDrink null) {throw new RuntimeException(请选择一个冷饮);}SuiXinPeiMeal meal new SuiXinPeiMeal();meal.setFood(food);meal.setColdDrink(coldDrink);return meal;} }新建单品抽象接口SingleProduct public interface SingleProduct {// 单品名称String getName();// 单品价格Float getCost(); }新建主食抽象接口Food、及其实现类Chicken鸡块、Fries薯条、Hamburger汉堡 public interface Food extends SingleProduct { }public class Chicken implements Food{Overridepublic String getName() {return 鸡块;}Overridepublic Float getCost() {return 13F;} }public class Fries implements Food{Overridepublic String getName() {return 薯条;}Overridepublic Float getCost() {return 10F;} }public class Hamburger implements Food {Overridepublic String getName() {return 汉堡;}Overridepublic Float getCost() {return 15F;} }新建冷饮抽象接口ColdDrink、及其实现类CocaCola可乐、NoSugarCola无糖可乐、Sprite雪碧 public interface ColdDrink extends SingleProduct { }public class CocaCola implements ColdDrink{Overridepublic String getName() {return 可乐;}Overridepublic Float getCost() {return 3.8F;} }public class NoSugarCola implements ColdDrink {Overridepublic String getName() {return 无糖可乐;}Overridepublic Float getCost() {return 5.0F;} }public class Sprite implements ColdDrink {Overridepublic String getName() {return 雪碧;}Overridepublic Float getCost() {return 8F;} }在main()方法中进行套餐模拟 public static void main(String[] args) {// 套餐鸡块可乐SuiXinPeiMealBuilder builder1 new SuiXinPeiMealBuilder();// 选择鸡块builder1.addFood(new Chicken());// 选择可口可乐builder1.addColdDrink(new CocaCola());// 创建订单Meal meal1 builder1.build();// 输出订单详情meal1.order();System.out.println();// 套餐汉堡雪碧SuiXinPeiMealBuilder builder2 new SuiXinPeiMealBuilder();builder2.addFood(new Hamburger());builder2.addColdDrink(new Sprite());Meal meal2 builder2.build();meal2.order(); }3. 演示结果 运行上述代码结果如下 四、优缺点 优点 对象的创建过程与其细节表示分离即解耦。 缺点 产生多余的建造者Builder类且每当添加一种套餐就需要多写一个对应的套餐建造者类。建造者与对象之间耦合当修改对象结构时建造者也要修改。可读性相对较差。 五、送给读者 在非必要的情况下业务代码中不建议使用该设计模式没有性能上的优化却导致可读性变差属于炫技型设计模式。如果本文对你有所帮助别忘了安排博主一顿麦当劳随心配11套餐哦。 纸上得来终觉浅绝知此事要躬行。 ————————我是万万岁我们下期再见————————
http://www.yutouwan.com/news/285949/

相关文章:

  • 建一个大网站需要的时间厦门app定制公司
  • 株洲市网站建设威海网站优化推广
  • 做网站py和phpwordpress ul id乱码
  • 网站设计品地图销售网站
  • 沈阳看男科的权威医院济南seo推广价格
  • wordpress获取作者的角色seo到底是做什么的
  • 开发网站去哪里学网站做优化需要多少钱
  • wordpress5.21开启多站点如何做网站竞品分析
  • 网站开发 后端返回前端一个地址 有什么用网站推广技巧有哪些?
  • 网站公司 转型宁波seo关键词优化制作
  • 青岛哪家做网站的公司好cpc引流做网站cpa推广
  • 039 织梦云idc网站源码专业网站制作公司名称
  • 重庆王网站制作唯品会网站建设目标
  • 企业网站官网鞍山信息港号吧
  • 网站 免费空间手机体验网站
  • html5做音乐网站跨境电商app有哪些
  • 高端网站设计公司有中国互联网巨头有哪些
  • 海淘网站建设wordpress go跳转页
  • 绍兴企业免费建站抖音做我女朋友的网站
  • 盐城城南建设局一局网站建app需要多少钱
  • 漯河网站建设服务公司化妆网站模板下载免费
  • 福建建设资格执业注册管理中心网站无锡微网站制作
  • 网站建设与维护 许宝良郑州制作平台网站
  • 普通网站建设的缺陷大型服装网站开发
  • 小程序建站平台哪个好网站备案号 如何添加
  • 帝国cms能做手机网站吗石家庄网站排名软件
  • 网站建设中两个月了网站建设比较合理的流程是
  • 免费html转wordpress衡水seo营销
  • 旅游网站建设方案之目标移动app开发技术
  • 免费网站空间怎么杭州鼎易做的网站