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

网页qq登录保护不再开启入口网站seo推广方案

网页qq登录保护不再开启入口,网站seo推广方案,企业信息查询网站查询,Wordpress可以访问么建造者模式#xff08;Builder Pattern#xff09;也叫做生成器模式#xff0c;是 GoF 的 23 种设计模式的一种#xff0c;它将一个复杂对象的构建与它的表示分离#xff0c;使得同样的构建过程可以创建不同的表示。 当我们需要实列化一个复杂的类#xff0c;以得到不同结… 建造者模式Builder Pattern也叫做生成器模式是 GoF 的 23 种设计模式的一种它将一个复杂对象的构建与它的表示分离使得同样的构建过程可以创建不同的表示。 当我们需要实列化一个复杂的类以得到不同结构类型和不同的内部状态的对象时我们可以用不同的类对它们的实列化操作逻辑分别进行封装这些类我们就称之为建造者。 ~ 本篇内容包括关于建造者模式、建造者模式 Demo、使用建造者模式进行重构 文章目录一、关于建造者模式1、关于建造者模式2、关于建造者模式的构成3、关于建造者模式的优缺点4、关于建造者模式与工厂模式区别二、建造者模式 Demo1、Demo 设计2、Demo 实现3、Demo 测试三、使用建造者模式进行重构1、重构前代码2、重构前使用3、重构后代码4、重构后使用一、关于建造者模式 1、关于建造者模式 建造者模式Builder Pattern也叫做生成器模式是 GoF 的 23 种设计模式的一种它将一个复杂对象的构建与它的表示分离使得同样的构建过程可以创建不同的表示。 当我们需要实列化一个复杂的类以得到不同结构类型和不同的内部状态的对象时我们可以用不同的类对它们的实列化操作逻辑分别进行封装这些类我们就称之为建造者。 当我们需要来自同一个类但是要就有不同结构对象时就可以通过构造另一个建造者来进行实列化。 建造者Builder模式创建的是复杂对象其产品的各个部分经常面临着剧烈的变化但将它们组合在一起的算法却相对稳定所以它通常在以下场合使用。 创建的对象较复杂由多个部件构成各部件面临着复杂的变化但构件间的建造顺序是稳定的。创建复杂对象的算法独立于该对象的组成部分以及它们的装配方式即产品的构建过程和最终的表示是独立的。 2、关于建造者模式的构成 建造者模式包含如下角色 抽象建造者类Builder这个接口规定要实现包含创建产品各个子部件的抽象方法以及返回复杂产品的方法并不涉及具体的部件对象的创建。具体建造者类ConcreteBuilder实现抽象 Builder 定义的所有方法并且返回一个装配好的对象。产品类Product一般是多个部件组成的复杂对象由具体建造者来创建其各个零部件。指挥者类Director负责安排已有模块的顺序然后调用 Builder 建造产品。 3、关于建造者模式的优缺点 # 优点 封装性在建造者模式中调用方不必知道产品内部组成的细节将一个复杂对象的构建与它的表示分离使得相同的创建过程可以创建不同的产品对象。扩展性每个具体建造者都相互独立替换具体建造者或新增具体建造者都很便捷。更关注 “由零件一步一步地组装出产品对象”。将复杂产品的创建步骤拆分到不同的方法中使得创建过程更加清晰。 # 缺点 建造者模式所创建的产品对象一般组成部分相似如果产品的内部变化复杂需要定义很多具体建造者类来实现这种变化导致系统变得很庞大。如果产品内部结构发生变化建造者也要相应修改有较大的维护成本。 4、关于建造者模式与工厂模式区别 工厂模式一般都是创建一个产品注重的是把这个产品创建出来就行只要创建出来不关心这个产品的组成部分。从代码上看工厂模式就是一个方法用这个方法就能生产出产品。建造者模式也是创建一个产品但是不仅要把这个产品创建出来还要关系这个产品的组成细节组成过程。 从代码上看建造者模式在建造产品时这个产品有很多方法建造者模式会根据这些相同方法但是不同执行顺序建造出不同组成细节的产品。 二、建造者模式 Demo 1、Demo 设计 生产汽车是一个复杂的过程它包含了车架车座等等组件的生产而车架又有碳纤维铝合金等材质的车座有橡胶真皮等材质。对于汽车的生产就可以使用建造者模式。 2、Demo 实现 # Car 产品类 public class Car {/*** 车架*/private String frame;/*** 座椅*/private String seat;public String getFrame() {return frame;}public void setFrame(String frame) {this.frame frame;}public String getSeat() {return seat;}public void setSeat(String seat) {this.seat seat;} }# Builder 抽象建造者类 public abstract class Builder {protected Car car new Car();/*** 建造车架*/public abstract void buildFrame();/*** 建造座椅*/public abstract void buildSeat();/*** 造车** return Car*/public abstract Car createCar(); }# ACarBulider 具体建造者类 public class ACarBuilder extends Builder {Overridepublic void buildFrame() {car.setFrame(铝合金车架);}Overridepublic void buildSeat() {car.setSeat(真皮车座);}Overridepublic Car createCar() {return car;} }# BCarBulider 具体建造者类 public class BCarBuilder extends Builder {Overridepublic void buildFrame() {car.setFrame(碳纤维车架);}Overridepublic void buildSeat() {car.setSeat(皮革车座);}Overridepublic Car createCar() {return car;} }# Director 指挥者类 public class Director {private final Builder mBuilder;public Director(Builder builder) {mBuilder builder;}public Car construct() {mBuilder.buildFrame();mBuilder.buildSeat();return mBuilder.createCar();} }3、Demo 测试 public class Client {private static void showCar(Builder builder) {Director director new Director(builder);Car car director.construct();System.out.println(car.getFrame());System.out.println(car.getSeat());}public static void main(String[] args) {showCar(new ACarBuilder());showCar(new BCarBuilder());}}三、使用建造者模式进行重构 建造者模式除了上面的用途外在开发中还有一个常用的使用方式就是当一个类构造器需要传入很多参数时如果创建这个类的实例代码可读性会非常差而且很容易引入错误此时就可以利用建造者模式进行重构。 1、重构前代码 public class Phone {private String cpu;private String screen;private String memory;private String mainboard;public Phone(String cpu, String screen, String memory, String mainboard) {this.cpu cpu;this.screen screen;this.memory memory;this.mainboard mainboard;}public String getCpu() {return cpu;}public void setCpu(String cpu) {this.cpu cpu;}public String getScreen() {return screen;}public void setScreen(String screen) {this.screen screen;}public String getMemory() {return memory;}public void setMemory(String memory) {this.memory memory;}public String getMainboard() {return mainboard;}public void setMainboard(String mainboard) {this.mainboard mainboard;}Overridepublic String toString() {return Phone{ cpu cpu \ , screen screen \ , memory memory \ , mainboard mainboard \ };}}2、重构前使用 public class Client {public static void main(String[] args) {//构建Phone对象Phone phone new Phone(intel, 三星屏幕, 金士顿, 华硕);System.out.println(phone);} }3、重构后代码 public class Phone {private String cpu;private String screen;private String memory;private String mainboard;private Phone(Builder builder) {cpu builder.cpu;screen builder.screen;memory builder.memory;mainboard builder.mainboard;}public static final class Builder {private String cpu;private String screen;private String memory;private String mainboard;public Builder() {}public Builder cpu(String val) {cpu val;return this;}public Builder screen(String val) {screen val;return this;}public Builder memory(String val) {memory val;return this;}public Builder mainboard(String val) {mainboard val;return this;}public Phone build() {return new Phone(this);}}Overridepublic String toString() {return Phone{ cpu cpu \ , screen screen \ , memory memory \ , mainboard mainboard \ };} }4、重构后使用 public class Client {public static void main(String[] args) {Phone phone new Phone.Builder().cpu(intel).mainboard(华硕).memory(金士顿).screen(三星).build();System.out.println(phone);} }
http://www.pierceye.com/news/837876/

相关文章:

  • 网站建设与网页制作试卷网站搜索引擎优化推广
  • 网站子目录设计网站开发数据库技术
  • 可以做音基题的音乐网站上海网站设计公司有哪些
  • 昆明做网站公司做家居的网站
  • 网站建设首选易网宣软文代发
  • 手机版网站开发用什么语言自己建设的网站怎么赚钱
  • 宁波建设监理协会网站软件开发文档的作用
  • 兰州电商平台网站建设网路神做网站怎么样
  • 诸城易讯网站建设服务中心网址的域名
  • 制作商务网站应用公园制作app软件下载
  • 情头定制网站被称为网站开发神器
  • 宝安网站设计案例淘宝页面制作
  • 天津品牌网站制作怎样建设网站流程
  • 怎样进行公司网站建设wordpress主题公司
  • 外宣做网站宣传网站功能描述
  • 部队网站建设多少钱营销自己的网站
  • 长春市城乡建设部网站南昌诚推网络技术有限公司
  • 网站 建设 欢迎你濮阳家电网站建设
  • 怎么快速建立一个网站如何用腾讯云服务器搭建wordpress
  • 五屏网站建设多少钱深圳网站公司有哪些
  • 莆田网站建站wordpress cd
  • 软件下载安装免费南京seo关键词优化服务
  • 广州网站设计软件建设将网站加入受信网站再试
  • 淘宝联盟网站备案常见的互联网应用
  • 自己做网站 搜索功能开发企业综合信息服务平台
  • 意大利语网站建设wordpress主题首页显示不全
  • 模板网站免费下载wordpress启用静态
  • 保定网站建设哪家好网站建设实践报告3000字
  • 网站制作项目执行免费制作微网站
  • 西安网站制作费用网站建设小程序开发报价