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

免费php网站有哪些诸暨网站制作公司 网页

免费php网站有哪些,诸暨网站制作公司 网页,装修加盟,海口有做棋牌娱乐网站的吗建造者模式 (将一个 复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。) 建造者模式是一种创建型的模式,有一些对象的创建过程new 是很繁杂的。 什么时候去使用建造者模式 由上文可以得出在一些对象创建…

建造者模式

(将一个 复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。) 

建造者模式是一种创建型的模式,有一些对象的创建过程new 是很繁杂的。

什么时候去使用建造者模式

由上文可以得出在一些对象创建非常繁杂的场景就可以使用建造者模式。指定创建顺序以免出错。

还有一种场景。可能产品细节会改变。比如升级了第二代。这时候只需要重新定义一个具体的建造者就可以了。方便于扩展。

建造者模式与工厂模式的不同:

建造者模式最主要的功能是基本方法的调用顺序安排,这些基本方法已经实现了, 顺序不同产生的对象也不同; 工厂方法则重点是创建,创建零件是它的主要职责,组装顺序则不是它关心的。

 

@Builder 注解用了建造者模式。

 代码:

1 . 建造对象

/*** 肯德基的套餐(fond+drink)* @author WHM**/
public class Product {private String food;private String drink;public String getFood() {return food;}public String getDrink() {return drink;}public void setFood(String food) {this.food = food;}public void setDrink(String drink) {this.drink = drink;}
}

2 产品扩展

 

public class MealA extends MealBuilder{@Overridepublic void buildFood() {pro.setFood("牛肉汉堡");}@Overridepublic void buildDrink() {pro.setDrink("可口可乐");}}
public class MealB extends MealBuilder{@Overridepublic void buildFood() {pro.setFood("鸡翅鸡腿");}@Overridepublic void buildDrink() {pro.setDrink("牛奶");}}

 3 抽象建造者,用于扩展

/*** 抽象建造者,用于扩展* @author WHM**/
public abstract class MealBuilder {Product pro = new Product();public abstract void buildFood();public abstract void buildDrink();public Product getProcdut() {return pro;}}

4 建造类

/*** 指挥生产套餐* * @author WHM**/
public class MealDirector {private MealBuilder mealBuilder;//传入构造器中public MealDirector(MealBuilder mealBuilder) {this.mealBuilder = mealBuilder;}public Product combine() {mealBuilder.buildDrink();mealBuilder.buildFood();return mealBuilder.getProcdut();}
}

 5 测试

package pattern.builder;/*** 1.建造者是对一个复杂对象的分解. 2.1抽象工厂模式实现对产品家族的创建:具有不同分类维度的产品组合;* 2.2它的主要目的是通过组装零配件而产生一个新产品 3.Product(产品角色):一个具体的产品对象(分解)。* Builder(抽象建造者):创建一个Product对象的各个分解部件指定的抽象接口。* ConcreteBuilder(具体建造者):实现抽象接口,构建和装配各个部件。 Director(指挥者):构建一个使用Builder接口的对象,松偶。* * 4.用户只需要传入我想生产的套餐,并不需要关心套餐生产过程* @author WHM**/
public class TMain {public static void main(String[] args) {// 套餐AMealA a = new MealA();// 准备套餐A的服务员MealDirector waiter = new MealDirector(a);// 获得套餐Product mealA = waiter.combine();System.out.print("套餐A的组成部分:");System.out.println("食物:" + mealA.getFood() + ";   " + "饮品:" + mealA.getDrink());}
}

 

引入

import lombok.Builder;

 

 

 获取对象就可以用builder,不在是new,如果10几个直接设置属性值就行。

 

http://www.yayakq.cn/news/799677/

相关文章:

  • 怎么建网站appwordpress get_search_form()
  • 建网站需要什么步骤wordpress控制上下页链接
  • 网站内链设置永川建网站
  • 手机网站设计制作服务宁波有几个区
  • 天津专业网站制作备案网站域名被抢注
  • 电子商务网站软件建设的核心眼镜网站建设
  • 平台网站建设需求制作海报用什么软件
  • 可以做视频剪辑兼职的网站网站推广公司兴田德润官网多少
  • 网站建设编辑器网站备备份教程
  • 鄂州网站建设公司wordpress 8.0怎么登录
  • 做苗木免费网站平原网站建设电话
  • 网站建设搞笑广告词wordpress缩略图错乱
  • 石家庄建立网站的公司91福利社区wordpress
  • 正规网站建设公司一般要多少钱哈尔滨最专业的网站建设
  • 衣柜做网站的关键词上海缪斯设计公司的主题文化
  • 网站设置gif禁用蜂网站开发
  • 学校网站建设报价是多少钱网页传奇加速器
  • 做网站接单渠道网站开发周总结
  • 做品牌特价的网站有哪些WordPress显示更新进度插件
  • 如何制作网站视频教程wordpress 间距
  • 北京手机网站开发费用广州 电商网站建设
  • 金环建设集团有限公司官方网站wordpress评论嵌套
  • 教育教研网站建设的意义网站建设怎么加音乐
  • 石墨网站开发全屏类网站
  • 怎么样免费做自己的网站wordpress ajax失败
  • 中国小康建设网 是个什么网站网站权限配置
  • 2014苏州建设银行招聘网站免费永久云服务器
  • 江西旺达建设工程有限公司网站天津市建设工程评标专家网站
  • 做外贸网站怎么做义乌市做网站
  • 免费的行情网站下载安装网站的后台是开发做的