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

网站开发实训安排国产erp软件前十名

网站开发实训安排,国产erp软件前十名,如何开发游戏辅助软件,温州做网站费用一、什么是建造者模式 建造者模式是一种创建型设计模式#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.dnsts.com.cn/news/144069.html

相关文章:

  • 网站 标题 字体简单的广告设计怎么做
  • 免费试用网站空间北京住房城乡建设厅网站首页
  • 西安公司网站设计wordpress 米课
  • 青岛建设工程信息网站做网站图片不够大
  • 山东企业网站建设推荐专门做旅行用品的网站
  • 做阿里国际网站会有成效吗百度网盘资源搜索入口
  • wordpress 数据库前缀网站排名优化外包
  • 国内优秀企业网站欣赏网站开发asp.net
  • 低价网站设计做网站的经费
  • 内部网站制作优化手机网站
  • 郑州专业做网站wordpress过滤用户输入数据
  • 织梦网如何把做网站的删掉网页版微信二维码几分钟失效
  • 自己的网站怎么编辑广州网站建设信息科技有限公司
  • 外贸网站faq南京移动网站建设报价
  • 营销型网站建设报价灌南县规划局网站理想家园规划建设
  • 购物网站开发设计思路什么是网站版面布局
  • 网站快捷导航ie怎么做自己做企业网站详细流程免费
  • 做网站用小公司还是大公司好怎么创建网页的快捷方式到桌面
  • 网帆-网站建设官方店适合个人开网店的平台
  • 国内做的比较好的旅游网站手机wap网站免费建站
  • seo网站排名厂商定制专业建设思路
  • 为什么网站突然打不开行业网站建设教程
  • 给朋友网站做宣传怎么写wordpress图片站优化
  • 信息手机网站模板做网站推广哪些
  • 网站开发背景知识微网站设计与开发是什么
  • 网站的功能规范厦门外贸网站建设
  • 检测网站是否被墙wordpress自定义页
  • 做响应网站的素材网站南昌百度推广公司
  • 国外有哪些做建筑材料的网站亚马逊外贸网站如何做
  • 文具网站建设策划书做财经类新闻的网站