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

网站有备案是正规的吗深圳网站建设补助

网站有备案是正规的吗,深圳网站建设补助,谷歌推广怎么开户,上海最近的新闻大事10条生产一辆车#xff0c;主要有以下步骤#xff1a;安装骨架、安装发动机及安装轮胎。这些步骤有指定的执行顺序#xff0c;步骤缺一不可。 图 传统方案 传统方案存在的问题#xff1a; 传参不便#xff0c;虽可在构造函数那传参#xff0c;但是传参时需要注意参数顺序等… 生产一辆车主要有以下步骤安装骨架、安装发动机及安装轮胎。这些步骤有指定的执行顺序步骤缺一不可。 图 传统方案 传统方案存在的问题 传参不便虽可在构造函数那传参但是传参时需要注意参数顺序等。扩展不便例如新增一种车型创建步骤不同这时需要修改Car的源码不符合开闭原则。客户端在创建对象的时候需要关心内部的创建细节。对象与对象创建耦合在一起。 1 建造者模式 将客户端与包含多个组成部分或部件的复杂对象的创建过程分离客户端无需关心复杂对象的内部组成部分与装配方式只需要知道所需的建造者类型即可。 创建者模式关注如何一步步地创建一个复杂对象不同的具体建造者定义了不同的创建过程且具体的建造者相互独立增加新的建造者非常方便无须修改已有代码系统具有较好的扩展性。 图 建造者模式结构图 Product: 产品角色是被构建的复杂对象包含多个部件。具体建造者创建该产品的内部表示并定义其装配过程。 Builder: 抽象建造者为创建一个产品Product对象的各个部件指定抽象接口。一般声名两类方法一类方法是buildPartX(),用于创建复杂对象的各个部件另一类方法是getResult(),用于返回复杂对象。Builder既可以是抽象类也可以是接口。 ConcreteBuilder: 具体建造者实现Builder接口实现各个部件的具体构造和装配方法定义并明确其所创建的复杂对象也可以提高一个方法返回创建好的复杂产品对象。 Director: 指挥者又称为导演类负责安排负责对象的建造次序。在其construct()方法中调用建造者对象的部件构造与装配方法完成复杂对象的建造。客户端一般只需要与指挥者进行交互。 public class Car {private String body;private String engine;private String tire;public void setBody(String body) {this.body body;}public void setEngine(String engine) {this.engine engine;}public void setTire(String tire) {this.tire tire;}Overridepublic String toString() {return Car{ body body \ , engine engine \ , tire tire \ };} }public abstract class CarBuilder {protected final Car car new Car();public abstract void installBody();public abstract void installEngine();public abstract void installTire();public Car getResult() {return car;}}public class AudiCarBuilder extends CarBuilder{Overridepublic void installBody() {car.setBody(奥迪-车身);}Overridepublic void installEngine() {car.setEngine(奥迪-发动机);}Overridepublic void installTire() {car.setTire(奥迪-轮胎);}}public class BenzCarBuilder extends CarBuilder{Overridepublic void installBody() {car.setBody(奔驰-车身);}Overridepublic void installEngine() {car.setEngine(奔驰-发动机);}Overridepublic void installTire() {car.setTire(奔驰-轮胎);} }public class CarDirector {private final CarBuilder carBuilder;public CarDirector(CarBuilder carBuilder) {this.carBuilder carBuilder;}public Car construct() {carBuilder.installBody();carBuilder.installEngine();carBuilder.installTire();return carBuilder.getResult();} }public class Client {public static void main(String[] args) {CarBuilder carBuilder;carBuilder new BenzCarBuilder();CarDirector carDirector new CarDirector(carBuilder);System.out.println(carDirector.construct());}} 1.1 省略Director 在有些情况下为了简化系统结构可以将Director和抽象建造者Builder进行合并在Builder中提供逐步构建复杂产品对象的construct()方法。将上面的Builder及Client类修改为: public abstract class OmitCarBuilder {protected final Car car new Car();public abstract void installBody();public abstract void installEngine();public abstract void installTire();public Car construct() {installBody();installEngine();installTire();return car;}}public class Client {public static void main(String[] args) {OmitCarBuilder omitCarBuilder new AudiOmitCarBuilder();System.out.println(omitCarBuilder.construct());}} 省略方式不影响系统的灵活性和可扩展性同时还简化了系统结构但加重了抽象建造者类的职责。如果construct()方法较为复杂待构建产品的组成部分较多建议还是将construct()方法单独封装在Director中。这样更符合单一职责原则。 1.2 钩子方法 增加钩子方法来控制是否调用某个buildPartX()方法。 构造方法的返回类型通常为boolean方法名一般为isxxx (xxx为属性名)。构造方法定义在抽象建造者类中。构造方法来决定某属性组件是否需要添加。 例如上面需求做了修改奥迪车不需要装发动机而奔驰车需要安装。 public abstract class HookCarBuilder {protected Car car new Car();public abstract void installBody();public abstract void installEngine();public abstract void installTire();public boolean isBody() {return false;}public boolean isEngine() {return false;}public boolean isTire() {return false;}public Car construct() {if (!isBody()) installBody();if (!isEngine()) installEngine();if (!isTire()) installTire();return car;}}public class AudiHookCarBuilder extends HookCarBuilder{Overridepublic void installBody() {car.setBody(奥迪-车身);}Overridepublic void installEngine() {car.setEngine(奥迪-发动机);}Overridepublic void installTire() {car.setTire(奥迪-轮胎);}Overridepublic boolean isEngine() {return true;} } 通过钩子方法可以对复杂产品的构建进行精细控制。可以控制buildPartX()方法的执行顺序还可以控制是否需要执行某个buildPartX()方法。 2 优缺点 优点 客户端不必知道产品内部组成细节将产品本身与产品的创建过程解耦使得相同的创建过程可以创建不同产品对象。每个具体建造者都相对独立而与其他具体建造者无关。用户使用不同的建造者即可生成不同的对象。系统扩展方便符合开闭原则。可以更加精细化地控制产品的创建过程。将复杂产品的创建步骤分解在不同的方法中使得创建过程更加清晰也更方便控制。 缺点 所创建的产品一般具有较多的共同点其组成部分相似。如果产品之间的差异性很大就不适合使用建造者模式。如果产品内部结构复杂且多变可能需要定义很多具体建造者类来实现这种变化这会让系统变得臃肿。 3 适用场景 需要生成的产品对象有复杂的内部结构包含多个成员变量。生成的产品对象属性相互依赖需要指定其生成顺序。隔离复杂对象的创建和适用并使得相同的创建过程可以创建不同的产品。
http://www.zqtcl.cn/news/95398/

相关文章:

  • 国外医疗网站模板wordpress主题 科技
  • 海淀企业型网站建设wordpress自定义帖子链接
  • 自己的网站怎么优化做网页的
  • dw设计一个简单网站网页微信版文件传输
  • 网站地图怎么做XML宁波网站建设服务提供商
  • 中石化两学一做网站获取网站域名
  • 吉林长春火车站官网湖北葛洲坝建设工程网站
  • 重庆网站推广服务广告公司女员工深夜兼职
  • 网站的要素是什么wordpress框架解密_day3
  • 抽奖怎么做网站彩页设计公司
  • 推广网站文案素材lamp环境wordpress
  • 合肥网站建设公司 推荐百度下载安装2021
  • 沈阳网站备案照相离婚证app制作软件
  • 唯品会一家做特卖的网站 分析那些网站可以做反链
  • 百度网站排名查询工具网站标签怎么做
  • 如何用ps做网站导航一个网站开发时间
  • 合肥城乡建设网站06628 网页制作与网站建设
  • 网站设计岗位的职责与要求北京网站建设 合一
  • 网站制作app开发公司网站建设 英文
  • 毕业设计网页制作网站建设网站预约挂号怎么做
  • 河东天津网站建设永州做网站的公司
  • 网页制作与网站建设填空题免费的企业邮箱怎么申请
  • 智慧农业网站建设沈阳建设信息网
  • 永久免费素材网站个人网站域名所有权
  • 做网站都需要什么工具网站开发培训哪里好
  • 做网站里面的图片像素要求安徽 网站建设
  • 电子商务推广网站wordpress小程序搭建
  • 张家港网站开发培训广告代理那些平台可以给网站做外链
  • 搞一个公司网站得多少钱中国航天空间站最新消息
  • php移动网站开发微商做图王官方网站