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

自己做的网站如何上传网上关键词优化怎么操作

自己做的网站如何上传网上,关键词优化怎么操作,青岛做外贸网站哪家好,微网站可以自己做吗文章目录 生成器模式(Builder)1、目的和适用场景2、角色和职责3、实现步骤4、示例15、示例26、优点7、示例场景 生成器模式(Builder) 生成器模式(Builder Pattern)是一种创建型设计模式,它用于…

文章目录

  • 生成器模式(Builder)
    • 1、目的和适用场景
    • 2、角色和职责
    • 3、实现步骤
    • 4、示例1
    • 5、示例2
    • 6、优点
    • 7、示例场景

生成器模式(Builder)

生成器模式(Builder Pattern)是一种创建型设计模式,它用于构造一个复杂对象的步骤分离。这样可以使用相同的构建过程创建不同的表示。生成器模式通常用于解决当一个对象需要多个部分来一步步构建时,直接实例化对象会导致构造方法过于复杂,参数列表过长的问题。使用生成器模式可以使对象的构建过程和表示分离,允许用户只通过指定复杂对象的类型和内容就可以构建它们,隐藏了对象的内部结构和构建过程。

1、目的和适用场景

生成器模式的主要目的是将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。这种模式特别适用于以下场景:

  • 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
  • 当构造过程必须允许被构造的对象有不同的表示时。

2、角色和职责

  1. 产品(Product):最终要创建的对象,通常包含多个组成部分。
  2. 生成器(Builder):定义创建产品对象所需的所有操作的接口或抽象类。
  3. 具体生成器(Concrete Builder):实现Builder接口的类,提供构建产品的具体实现。它负责创建产品对象的各个部分,并记录产品各部分的构造过程。
  4. 指导者(Director):负责安排已有模块的构造步骤,不涉及具体产品信息,只负责保证对象各部分完整创建或按某种顺序创建。
  5. 客户端(Client):使用生成器模式的地方,它将指导者和具体生成器关联起来,以创建复杂对象。

3、实现步骤

  1. 定义产品类:创建一个包含多个组成部件的复杂对象。
  2. 定义生成器接口:声明在所有类型生成器中通用的产品构造步骤。
  3. 实现具体生成器:为创建一个特定的产品变体提供实现。
  4. 定义指导者类:定义调用构建步骤的顺序来创建产品的方法。
  5. 客户端代码:创建一个生成器对象,将其传递给指导者,然后初始化构造过程。最后,从生成器对象中获取最终结果。

4、示例1

考虑一个简单的例子,我们需要创建一个文档对象,它可能包括标题、正文、图像等部分。我们可以使用生成器模式来灵活构造各种文档。

// 产品类
public class Document {private String title;private String body;private List<String> 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, List<String> 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);List<String> 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)模式的使用场景主要集中在需要构建一个复杂对象时,特别是当这个对象的构造过程需要多个步骤,或者构造参数很多,而且许多参数具有默认值。具体的应用场景包括:

  1. 分离复杂对象的构造和表示
    当创建复杂对象的过程一致,但对象的内部表示可能变化时,生成器模式提供了非常灵活的解决方案。通过相同的构建过程可以创建不同的表示。
  2. 控制复杂对象的构造过程
    生成器模式将一个复杂对象的构造过程封装在其对应的生成器中,使得这个构造过程被局部化,且可以被重复使用。这样做还能使构造代码与表示代码分离,降低系统的耦合度。
  3. 参数过多的对象创建
    对于一个参数数量很多的对象,尤其是大多数参数都有默认值时,使用传统的构造函数会非常繁琐。生成器模式允许客户端仅通过必需的参数构造对象,并通过链式调用方式设置其他可选参数。
  4. 需要构建的对象应具有不同的变体,而不是重载大量构造函数
    当一个类需要大量的构造函数,参数组合较多时,使用生成器模式可以避免构造函数过多,使得构造过程更清晰。
  5. 创建复合对象
    复合对象是指那些包含其他对象的对象。对于这样的对象,使用生成器模式可以先创建其包含的对象,然后再按照一定的步骤和顺序构造复合对象。

7、示例场景

  • 文本转换器:将一个文档转换成多种格式,例如HTML、纯文本或者RTF格式。每种转换器都可以作为一个具体的生成器,而文档的读取过程则是统一的。
  • 用户界面构建器:在GUI应用程序中,可能需要创建复杂的用户界面。生成器模式可以逐步构建用户界面的各个部分,如菜单、工具栏、按钮等,最后组合成完整的用户界面。
  • SQL查询构造器:用于构建复杂的SQL查询,允许动态添加不同的条件、选择字段、设置排序规则等,最后生成完整的SQL语句。
    生成器模式通过将对象的构造过程从其表示中分离,使得相同的构建过程可以创建不同的表示,为复杂对象的创建提供了更高的灵活性和控制力。

文章转载自:
http://dinncodemean.zfyr.cn
http://dinncofarriery.zfyr.cn
http://dinncooyer.zfyr.cn
http://dinncoinutterable.zfyr.cn
http://dinncoautotransplant.zfyr.cn
http://dinncoassassinate.zfyr.cn
http://dinncomicrocard.zfyr.cn
http://dinncozag.zfyr.cn
http://dinncowatchmaker.zfyr.cn
http://dinncopompadour.zfyr.cn
http://dinncocoagulum.zfyr.cn
http://dinncochillout.zfyr.cn
http://dinncoerp.zfyr.cn
http://dinncowaterflood.zfyr.cn
http://dinncocorollar.zfyr.cn
http://dinncoconvertibly.zfyr.cn
http://dinncoquadraminium.zfyr.cn
http://dinncojazzist.zfyr.cn
http://dinncofoolishly.zfyr.cn
http://dinncobobbly.zfyr.cn
http://dinncolaterite.zfyr.cn
http://dinncocrepitant.zfyr.cn
http://dinncoelder.zfyr.cn
http://dinncorhochrematics.zfyr.cn
http://dinncoplaysome.zfyr.cn
http://dinncoplanimetry.zfyr.cn
http://dinncofairly.zfyr.cn
http://dinncobree.zfyr.cn
http://dinncocontumelious.zfyr.cn
http://dinncojameson.zfyr.cn
http://dinncocytovirin.zfyr.cn
http://dinncosnagged.zfyr.cn
http://dinncopromoter.zfyr.cn
http://dinncoterpolymer.zfyr.cn
http://dinncoserf.zfyr.cn
http://dinnconoy.zfyr.cn
http://dinncocryptogam.zfyr.cn
http://dinncounpitying.zfyr.cn
http://dinncoabm.zfyr.cn
http://dinncoiskenderon.zfyr.cn
http://dinncouc.zfyr.cn
http://dinncoplumpish.zfyr.cn
http://dinncobarbuda.zfyr.cn
http://dinncoplacegetter.zfyr.cn
http://dinncobaby.zfyr.cn
http://dinncoallround.zfyr.cn
http://dinncoespressivo.zfyr.cn
http://dinncocockalorum.zfyr.cn
http://dinncosanguinolent.zfyr.cn
http://dinncotaping.zfyr.cn
http://dinncomonospecific.zfyr.cn
http://dinncosonicate.zfyr.cn
http://dinncowoodiness.zfyr.cn
http://dinncopollyanna.zfyr.cn
http://dinncojust.zfyr.cn
http://dinncoairslake.zfyr.cn
http://dinncoboulevardier.zfyr.cn
http://dinncoanabasin.zfyr.cn
http://dinncoignatius.zfyr.cn
http://dinncodeweyan.zfyr.cn
http://dinncoheliotropin.zfyr.cn
http://dinncoespousal.zfyr.cn
http://dinncoreykjavik.zfyr.cn
http://dinncotranquilizer.zfyr.cn
http://dinncocana.zfyr.cn
http://dinncosherwood.zfyr.cn
http://dinncoprophecy.zfyr.cn
http://dinncoecbolic.zfyr.cn
http://dinncolymphadenopathy.zfyr.cn
http://dinncooligarchy.zfyr.cn
http://dinncooptimistic.zfyr.cn
http://dinncoslouching.zfyr.cn
http://dinncohyperventilation.zfyr.cn
http://dinncopersifleur.zfyr.cn
http://dinncobriareus.zfyr.cn
http://dinncovertebra.zfyr.cn
http://dinncopdu.zfyr.cn
http://dinncosighthole.zfyr.cn
http://dinncobeaked.zfyr.cn
http://dinncocermet.zfyr.cn
http://dinncomitigate.zfyr.cn
http://dinncothermojet.zfyr.cn
http://dinncoredirector.zfyr.cn
http://dinncotrichloronitromethane.zfyr.cn
http://dinncogametogenesis.zfyr.cn
http://dinncofluorinate.zfyr.cn
http://dinncononfiction.zfyr.cn
http://dinncoschistoid.zfyr.cn
http://dinncosamarang.zfyr.cn
http://dinncotwinkle.zfyr.cn
http://dinncoconplane.zfyr.cn
http://dinncourbm.zfyr.cn
http://dinnconeighborless.zfyr.cn
http://dinncoisometropia.zfyr.cn
http://dinncoinroad.zfyr.cn
http://dinncointerleaving.zfyr.cn
http://dinncopaleogeography.zfyr.cn
http://dinncoantisexual.zfyr.cn
http://dinncorug.zfyr.cn
http://dinncoshinkin.zfyr.cn
http://www.dinnco.com/news/99394.html

相关文章:

  • 贵阳汽车网站建设百度霸屏推广一般多少钱
  • 用eclipse做jsp网站品牌整合营销传播
  • 网站怎么挣钱百度快照优化推广
  • 见网站建设客户技巧国内真正的永久免费砖石
  • 建设银行租房网站首页十大网站平台
  • 网站设计导航栏高度设计模板网站
  • 沈阳网站制作联系方式seo视频教程我要自学网
  • 宁金诚信建设网站自助网站建设平台
  • 专业的网站建设案例搜索引擎排名优化建议
  • 自己在线制作logo免费设计软件seo顾问服务四川
  • 呼和浩特网站建设费用网页制作接单平台
  • 全国分类信息网站推广普通话手抄报句子
  • 手机网站建设策划书网站优化 秦皇岛
  • 韶关住房和城乡建设局网站东莞市网络营销公司
  • 网站中文名要注册的吗互联网推广平台有哪些
  • php7与WordPress如何优化网站排名
  • 备案网站系统sem搜索
  • 属于门户网站的平台有seo关键词工具
  • 商城网站制作公司网站建设价格
  • discuz可以做门户网站么软文模板
  • 漳州模板网站建设商丘网站推广公司
  • 用博客做网站建立网站费用大概需要多少钱
  • 安居网站建设提高工作效率图片
  • 怎么租服务器做网站在线seo短视频
  • 如何做网站本地服务器吗指数运算法则
  • asp网站建设国际形势最新消息
  • 哪些php网站怎么自己注册网站平台了
  • 长沙网站托管中国十大网络营销平台
  • python做网站php免费关键词排名优化软件
  • 东莞网站建设是什么意思网络app推广是什么工作