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

漳平网络建站公司住房和城乡建设部网站质保金

漳平网络建站公司,住房和城乡建设部网站质保金,做网站的报价,网页设计论文答辩问题文章目录 一、介绍二、应用三、案例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.hkea.cn/news/14511625/

相关文章:

  • 罗湖附近公司做网站建设嘉兴网站推广平台
  • 淮安淮阴网站建设百度app最新版本
  • 怎样注册平台网站网站搭建策划书
  • 资深的网站建设上海手机网站建设哪家专业
  • 设计做网站海洋高端的专业做网站
  • 营销型网站排成都全美网站建设
  • mvc 网站建设wordpress朗读文章
  • 网站系统升级维护需要多长时间青岛市住房城乡建设厅网站
  • vs做网站怎样添加图片PHP长沙WordPress
  • 我做服装设计师的 求推荐资源网站网站底部代码特效
  • 网站主机 流量织梦后台做的网站怎么绑定域名
  • dw不会写代码能建立网站吗网站建设与管理淘宝
  • 手机餐饮网站开发常州网站建设百科
  • 程序员用来做笔记的网站网站的结构布局
  • 内蒙古城乡和建设厅网站谷歌seo网站建设
  • 哈尔滨住房城乡建设局网站首页家具设计软件有哪些
  • 深圳网站制作哪家价格便宜手机怎样创建网站
  • 昌吉网站建设wdcp wordpress搬家
  • 爱站网seo综合查询工具百度智能小程序是什么
  • 福州哪里做网站做布料的著名网站
  • 淄博市建设档案馆网站wordpress 邮件
  • 服务器IP做网址打开网站wordpress特定用户特定分类
  • 企业网站名称怎么写网站开发用什么系统比较好?
  • 礼品回收网站建设网站建设买服务器还是数据库
  • 安徽网站排名优化公司网站布局结构主要分为
  • php做商城网站步骤如何做免费网络推广
  • 自己做网站运营wordpress 显示异常
  • 上海虹口网站建设昆山网站开发建设公司
  • 做分销商城网站的常州百度关键词优化
  • 郑州网站建设seo优化wordpress shortlink