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

服装 公司 网站建设cms开源系统

服装 公司 网站建设,cms开源系统,十堰h5网站建设,中石油第七建设公司网站一、什么是建造者模式 建造者模式是一种创建型设计模式#xff0c;也叫生成器模式。 定义#xff1a;封装一个复杂对象构造过程#xff0c;并允许按步骤构造。 解释#xff1a;就是将复杂对象的创建过程拆分成多个简单对象的创建过程#xff0c;并将这些简单对象组合起来…一、什么是建造者模式 建造者模式是一种创建型设计模式也叫生成器模式。 定义封装一个复杂对象构造过程并允许按步骤构造。 解释就是将复杂对象的创建过程拆分成多个简单对象的创建过程并将这些简单对象组合起来构建出复杂对象。 二、角色组成 产品类Product表示被创建的复杂对象。它通常包含多个部分或者组成并由具体的建造者逐步构建而成。 抽象建造者类Builder定义了建造复杂对象所需要的各个部分的创建方法。它通常包括多个构建方法和一个返回产品的方法。 具体建造者类ConcreteBuilder实现Builder接口并提供各个部分或者组成的构建方法。 指挥者类Director负责控制建造者的构建顺序指挥建造者如何构建复杂对象。 三、优缺点 优点 灵活可以分步骤地构建复杂对象使得构建过程更加灵活。 解耦可以隔离复杂对象的创建和使用客户端不必关心对象的创建细节。 易扩展增加新的具体建造者很方便可以扩展构建器功能符合开闭原则。 缺点 增加工作量需要额外的代码来创建和管理具体建造者类增加了程序员的工作量。 效率低相比于其他创建型模式在运行时效率较低特别是对象太复杂时。 四、应用场景 4.1 生活场景 盒饭套餐顾客可以选择不同的菜服务员按照顾客的要求将这些菜组合起来最终构建出一个完整的套餐。 盖房子需要分多个阶段进行比如准备材料、打地基、盖围墙…。建造者模式可以将房屋的建造分解成多个步骤每个步骤对应一个具体的建造者最终由包工头指导者来调用不同的建造者完成整个房子的建造。 4.2 java场景 StringBuilder能够动态地构建字符串。 Stream API将集合类转为stream流通过一系列的中间操作和终止操作来生成最终结果。 Lombok的Builder注解一个注解就可以生成建造者模式的代码。五、代码实现 肯德徳都吃过吧里面有很多的套餐。假设套餐主要由汉堡、薯条和饮料三种组成每个组件都有不同种类和大小并且每个套餐的组合方式也不同。下面以肯德徳套餐为例解释建造者模式。 产品类Meal 抽象建造者类MealBuilder 具体建造者类BeefBurgerMealBuilder、ChickenMealBuilder、ShrimpMealBuilder 指挥者类MealDirector 5.1 产品类Product /*** * 1.产品类Product*/ Data public class Meal {//汉堡包private String burger;//薯条private String fries;//饮料private String drink; }5.2 抽象建造者Builder /*** * 2.抽象建造者Builder*/ public abstract class MealBuilder {protected Meal mealnew Meal();//构建汉堡public abstract void buildBurger();//构建薯条public abstract void buildFries();//构建饮料public abstract void buildDrink();public Meal getMeal(){return meal;} }5.3 具体构建者ConcreteBuilder /**** 3.具体建造者ConcreteBuilder)鸡肉汉堡套餐*/ public class ChickenMealBuilder extends MealBuilder{Overridepublic void buildBurger() {meal.setBurger(鸡肉汉堡);}Overridepublic void buildFries() {meal.setFries(中份薯条);}Overridepublic void buildDrink() {meal.setDrink(大杯果汁);} }/*** * 3.具体建造者ConcreteBuilder)牛肉汉堡套餐*/ public class BeefBurgerMealBuilder extends MealBuilder {Overridepublic void buildBurger() {meal.setBurger(牛肉汉堡);}Overridepublic void buildFries() {meal.setFries(大份薯条);}Overridepublic void buildDrink() {meal.setDrink(中杯可乐);} } /*** * 3.具体建造者ConcreteBuilder)虾肉汉堡套餐*/ public class ShrimpMealBuilder extends MealBuilder {Overridepublic void buildBurger() {meal.setBurger(虾肉汉堡);}Overridepublic void buildFries() {meal.setFries(小份薯条);}Overridepublic void buildDrink() {meal.setDrink(大杯芬达);} }5.4 指导者Director /*** * 4.指导者Director*/ public class MealDirector {private MealBuilder mealBuilder;public void setMealBuilder(MealBuilder mealBuilder){this.mealBuildermealBuilder;}public Meal getMeal(){return mealBuilder.getMeal();}//制作套餐public void constructMeal(){mealBuilder.buildBurger();mealBuilder.buildFries();mealBuilder.buildDrink();} } 5.5 testBuilder /*** * 建造者模式测试类*/ SpringBootTest public class TestBuilder {Testvoid testBuilder(){//创建指导者MealDirector directornew MealDirector();//执导建造牛肉套餐director.setMealBuilder(new BeefBurgerMealBuilder());director.constructMeal();Meal meal director.getMeal();System.out.println(牛肉套餐meal.toString());//鸡肉套餐director.setMealBuilder(new ChickenMealBuilder());director.constructMeal();Meal meal2 director.getMeal();System.out.println(鸡肉套餐meal2.toString());//虾肉套餐director.setMealBuilder(new ShrimpMealBuilder());director.constructMeal();Meal meal3 director.getMeal();System.out.println(虾肉套餐meal3.toString());} }根据不同的需求建造者模式可以构造出不同的套餐对象。每个套餐的构建过程都由不同的建造者实现在构建过程中可定制相应的属性。最终因为套餐的构建过程和表示分离所以同样的构建过程可以创建出不同的表示。 六、总结 使用场景 当需要创建一些特定的对象但是它们拥有共同的组成部分时比如一个房子可以由个个部件框架、墙、窗户等这些部件可以组合起来构造完整的房子。 当对象的构建过程比较复杂且需要多个步骤时例如创建一份电子商务订单需要多个步骤如选择商品、填写地址和支付等这些步骤可以被分别封装成为订单构建器中的不同方法。 当需要创建一些特定类型的对象例如复杂的数据结构或配置对象时这在编写配置文件解析器以及通用数据结构如二叉树等时很有用。 建造者模式也可以被用于通过更高级的方式来构建复杂对象例如序列化和反序列化。 与抽象工厂模式的区别 抽象工厂模式强调的是产品族的创建即相关的产品一起被创建出来而建造者模式强调的是一个复杂对象的创建即它的各个部分逐步被创建出来。
http://www.zqtcl.cn/news/442205/

相关文章:

  • 大连做网站那个公司最好wordpress+高清背景
  • 怎样做网站xml案例建网站
  • 海口发布最新通告用二级域名做网站对seo
  • 网站301重定向 权重转移网站不用下载免费软件
  • 网站系统升级昆明做百度网站电话
  • 电子商务与网站建设实践论文wordpress 主题目录
  • 网站页面打不开中小企业网站推广
  • 佛山建网站企业网站怎么维护
  • 网站制作报价明细wordpress喜欢
  • 网站开发2008文化传播有限公司网站建设
  • 个人账号如何注册网站广州专业网站改版设计公司
  • wordpress视频网站采集沈阳建设工程质量检测中心网站
  • 做网站优化哪家好远程管理wordpress站群
  • 实用写作网站做企业策划的公司
  • 如何建立自己手机网站58招聘网站官网
  • 网站程序源码下载网站怎么做定位功能
  • 深圳vi设计公司联系西安seo诊断
  • 老虎淘客系统可以做网站吗绍兴网站专业制作
  • 小公司做网站需要 align center
  • 自己做的网站怎么上传网络什么网站可以找人做系统
  • 公司在兰州要做网站怎样选择做期货关注什么网站
  • 响应式网站是指自适应吗新开传奇网站首区
  • 做网站产品介绍wordpress 参数 传递
  • 网站颜色搭配技巧建设摩托车价格大全
  • 哪些网站可以做画赚钱宁波模板建站定制
  • 昆明门户网站建设wordpress权限设置
  • 设计网站建设图片wordpress博客置顶
  • 网站上海网站建设网站数据建设涉及哪些内容
  • 3d效果图教程网站宁波网站建设慕枫科技
  • 视频结交网站怎么做想创建一个网站