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

如何做电影网站合肥佰瑞网站

如何做电影网站,合肥佰瑞网站,天河建网站,网站建设基础教程文章目录 生成器模式#xff08;Builder#xff09;1、目的和适用场景2、角色和职责3、实现步骤4、示例15、示例26、优点7、示例场景 生成器模式#xff08;Builder#xff09; 生成器模式#xff08;Builder Pattern#xff09;是一种创建型设计模式#xff0c;它用于… 文章目录 生成器模式Builder1、目的和适用场景2、角色和职责3、实现步骤4、示例15、示例26、优点7、示例场景 生成器模式Builder 生成器模式Builder Pattern是一种创建型设计模式它用于构造一个复杂对象的步骤分离。这样可以使用相同的构建过程创建不同的表示。生成器模式通常用于解决当一个对象需要多个部分来一步步构建时直接实例化对象会导致构造方法过于复杂参数列表过长的问题。使用生成器模式可以使对象的构建过程和表示分离允许用户只通过指定复杂对象的类型和内容就可以构建它们隐藏了对象的内部结构和构建过程。 1、目的和适用场景 生成器模式的主要目的是将一个复杂对象的构建与其表示分离使得同样的构建过程可以创建不同的表示。这种模式特别适用于以下场景 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。当构造过程必须允许被构造的对象有不同的表示时。 2、角色和职责 产品Product最终要创建的对象通常包含多个组成部分。生成器Builder定义创建产品对象所需的所有操作的接口或抽象类。具体生成器Concrete Builder实现Builder接口的类提供构建产品的具体实现。它负责创建产品对象的各个部分并记录产品各部分的构造过程。指导者Director负责安排已有模块的构造步骤不涉及具体产品信息只负责保证对象各部分完整创建或按某种顺序创建。客户端Client使用生成器模式的地方它将指导者和具体生成器关联起来以创建复杂对象。 3、实现步骤 定义产品类创建一个包含多个组成部件的复杂对象。定义生成器接口声明在所有类型生成器中通用的产品构造步骤。实现具体生成器为创建一个特定的产品变体提供实现。定义指导者类定义调用构建步骤的顺序来创建产品的方法。客户端代码创建一个生成器对象将其传递给指导者然后初始化构造过程。最后从生成器对象中获取最终结果。 4、示例1 考虑一个简单的例子我们需要创建一个文档对象它可能包括标题、正文、图像等部分。我们可以使用生成器模式来灵活构造各种文档。 // 产品类 public class Document {private String title;private String body;private ListString images new ArrayList();public void setTitle(String title) {this.title title;}public void setBody(String body) {this.body body;}public void addImage(String image) {images.add(image);}public void showDocument() {System.out.println(Document Title: title);System.out.println(Body: body);System.out.println(Images: String.join(, , images));} }// 抽象生成器 public interface DocumentBuilder {void buildTitle(String title);void buildBody(String body);void buildImage(String image);Document getDocument(); }// 具体生成器 public class ConcreteDocumentBuilder implements DocumentBuilder {private Document document new Document();Overridepublic void buildTitle(String title) {document.setTitle(title);}Overridepublic void buildBody(String body) {document.setBody(body);}Overridepublic void buildImage(String image) {document.addImage(image);}Overridepublic Document getDocument() {return document;} }// 指导者 public class Director {private DocumentBuilder builder;public Director(DocumentBuilder builder) {this.builder builder;}public void construct(String title, String body, ListString images) {builder.buildTitle(title);builder.buildBody(body);for (String image : images) {builder.buildImage(image);}} }// 客户端 public class Client {public static void main(String[] args) {DocumentBuilder builder new ConcreteDocumentBuilder();Director director new Director(builder);ListString images Arrays.asList(Image1, Image2);director.construct(My Title, This is the body., images);Document document builder.getDocument();document.showDocument();} } 在这个例子中ConcreteDocumentBuilder类实现了DocumentBuilder接口提供了构建Document对象各个部分的 5、示例2 假设我们需要构建一个复杂的Car对象它包含engine, seats, GPS等多个部分。 // 产品类 public class Car {private String engine;private int seats;private boolean GPS;// Car的构造器/Setter略去提供设置各个属性的方法 }// 生成器接口 public interface Builder {void setEngine(String engine);void setSeats(int seats);void setGPS(boolean GPS); }// 具体生成器 public class CarBuilder implements Builder {private Car car;public CarBuilder() {this.car new Car();}Overridepublic void setEngine(String engine) {car.setEngine(engine);}Overridepublic void setSeats(int seats) {car.setSeats(seats);}Overridepublic void setGPS(boolean GPS) {car.setGPS(GPS);}public Car build() {return car;} }// 指导者 public class Director {public void constructSportsCar(Builder builder) {builder.setEngine(Sport Engine);builder.setSeats(2);builder.setGPS(true);}// 可以定义更多constructXxxCar方法以构建不同类型的汽车 }// 客户端代码 public class Demo {public static void main(String[] args) {CarBuilder builder new CarBuilder();Director director new Director();// 指导者使用具体生成器实例进行构建操作director.constructSportsCar(builder);// 从生成器中获取最终构建的产品Car car builder.build();System.out.println(car);} } 6、优点 封装性好客户端不需要知道产品内部组成的细节。构建和表示分离构建算法可以独立于产品的组成部分以及它们的装配方式。更好的复用性由于构建过程被封装在指导 生成器Builder模式的使用场景主要集中在需要构建一个复杂对象时特别是当这个对象的构造过程需要多个步骤或者构造参数很多而且许多参数具有默认值。具体的应用场景包括 分离复杂对象的构造和表示 当创建复杂对象的过程一致但对象的内部表示可能变化时生成器模式提供了非常灵活的解决方案。通过相同的构建过程可以创建不同的表示。控制复杂对象的构造过程 生成器模式将一个复杂对象的构造过程封装在其对应的生成器中使得这个构造过程被局部化且可以被重复使用。这样做还能使构造代码与表示代码分离降低系统的耦合度。参数过多的对象创建 对于一个参数数量很多的对象尤其是大多数参数都有默认值时使用传统的构造函数会非常繁琐。生成器模式允许客户端仅通过必需的参数构造对象并通过链式调用方式设置其他可选参数。需要构建的对象应具有不同的变体而不是重载大量构造函数 当一个类需要大量的构造函数参数组合较多时使用生成器模式可以避免构造函数过多使得构造过程更清晰。创建复合对象 复合对象是指那些包含其他对象的对象。对于这样的对象使用生成器模式可以先创建其包含的对象然后再按照一定的步骤和顺序构造复合对象。 7、示例场景 文本转换器将一个文档转换成多种格式例如HTML、纯文本或者RTF格式。每种转换器都可以作为一个具体的生成器而文档的读取过程则是统一的。用户界面构建器在GUI应用程序中可能需要创建复杂的用户界面。生成器模式可以逐步构建用户界面的各个部分如菜单、工具栏、按钮等最后组合成完整的用户界面。SQL查询构造器用于构建复杂的SQL查询允许动态添加不同的条件、选择字段、设置排序规则等最后生成完整的SQL语句。 生成器模式通过将对象的构造过程从其表示中分离使得相同的构建过程可以创建不同的表示为复杂对象的创建提供了更高的灵活性和控制力。
http://www.hkea.cn/news/14402206/

相关文章:

  • 动易手机网站wordpress 图文混排
  • 在线网站开发培训哪个公司网络信号最好
  • 网站开发方式哪四种阿里巴巴网站怎么做才能排第一
  • 网站做外链什么意思编程猫的网站是什么
  • 购买模板做网站网页制作与网站建设作业
  • 电子商务网站建设概括长沙招聘信息网
  • 专业做包装设计网站抓取式网站建设
  • 怎么将自己做的网站上线国内外包平台
  • 建网站多少钱一平方绿色食品销售网站建设
  • 苏宁网站建设wordpress是开源的么
  • 肥西建设局官方网站天津建设招标网站
  • 湛江网站建设电话开发公司补偿物业公司物业费协议
  • 自己建设网站怎么盈利网站建设如何销售
  • 京东的网站是哪家公司做的智能网站推广优化
  • 建设咖啡厅网站的意义直播视频采集卡
  • 什么是优化网站手机ppt制作
  • 深圳网站建设响应式wordpress顶部添加图片
  • 盐城网站优化工作室免费企业查询
  • 网站建设的总结200字网络营销策划案的形式
  • 百度网站官方认证怎么做上海公司记账
  • 手机如果做网站电子商务网站建设的评估工具
  • 大田县建设局官方网站wordpress视频无法播放视频播放器
  • 商丘市有没有做网站wordpress精简版下载
  • 网站源码是什么格式网站搜索排名优化软件
  • seo站内优化培训做前后端网站教程
  • 网站开发软件网站建设方案平台架构
  • 电商网站设计规范wordpress建网 打不开
  • 建设企业网站哪家有实力西安广告设计培训
  • 小网站谁有做一个网站的建设流程
  • 现在什么网站比较火做推广青岛网站建设首选营销吧系统