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

博罗做网站哪家强win7怎么做网站服务器吗

博罗做网站哪家强,win7怎么做网站服务器吗,王妃貌美还狠凶,网站改版换域名建造者模式 将一个复杂对象的创建与它的表示分离,使得同样的构建过程可以创建不同的表示 四种角色 Product 产品角色 指的是一个具体的产品对象Builder 抽象建造者 创建一个产品对象的各个部件的接口/抽象类ConcreteBuilder 具体建造者 实现或继承抽象建造者接口…

建造者模式

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

四种角色

  1. Product 产品角色 指的是一个具体的产品对象
  2. Builder 抽象建造者 创建一个产品对象的各个部件的接口/抽象类
  3. ConcreteBuilder 具体建造者 实现或继承抽象建造者接口 具体的构建和装配各个部件
  4. Director 指挥者 构建一个使用Builder接口的对象,主要用于创建一个复杂的对象,负责指挥构建一个工程,决定了工程如何构建,按照什么顺序构建

场景

  • 需要生成的对象具有复杂的内部结构
  • 需要生成的对象内部属性本身相互依赖
  • 与不可变对象配合使用

优点

  • 建造者独立,易于扩展
  • 便于控制细节风险

实现

使用继承的方式实现

public class ExtendTest {public static void main(String[] args) {AbstractBook book = new MacBookPro();book.produceBook();System.out.println("========================================");book = new XiaoMiBook();book.produceBook();}
}
// 定义一个抽象类
abstract class AbstractBook {public abstract void fillwithCpu();public abstract void fillwithGpu();public void produceBook() {fillwithCpu();fillwithGpu();}
}
// 定义具体实现类1
class MacBookPro extends AbstractBook {@Overridepublic void fillwithCpu() {System.out.println("我是高端的MacBook Pro,我使用的是迄今为止地表最强的M2 MAX芯片,我可太快太牛逼了...");}@Overridepublic void fillwithGpu() {System.out.println("我是高端的MacBook Pro,我使用的是迄今为止地表最强的M2 MAX GPU,对图形这块,我可是没输过...");}
}
// 定义具体实现类2
class XiaoMiBook extends AbstractBook {@Overridepublic void fillwithCpu() {System.out.println("我是小米笔记本,我的CPU是还不错的13代英特尔酷睿i5处理器...");}@Overridepublic void fillwithGpu() {System.out.println("我是小米笔记本,我的GPU是还不错的Geforce GTX3050Ti...");}
}

使用建造者模式

public class BuilderTest2 {public static void main(String[] args) {Book build = new BookBuilder().buildTotalPage(1).buildTotalWord(2).build();System.out.println(build);Book build2 = new BookBuilder().buildTotalPage(3).buildTotalWord(4).build();System.out.println(build2);}
}class Book{private Integer totalPage;private Integer totalWord;public Book(){}public Book(BookBuilder builder){this.totalPage = builder.totalPage;this.totalWord = builder.totalWord;}public String toString(){return "Book[totalPage="+this.totalPage+",totalWord="+this.totalWord+"]";}
}
final class BookBuilder{public Integer totalPage;public Integer totalWord;public BookBuilder buildTotalPage(Integer totalPage) {this.totalPage = totalPage;return this;}public BookBuilder buildTotalWord(Integer totalWord) {this.totalWord = totalWord;return this;}public Book build(){return new Book(this);}
}

简化对象实现

public class BuilderTest {public static void main(String[] args) {Director director = new Director(new IphoneBuilder());MobilePhone construct = director.construct();System.out.println(construct);Director director1 = new Director(new SanXinBuilder());MobilePhone construct1 = director1.construct();System.out.println(construct1);}
}@Getter
@Setter
class MobilePhone{private String name;private String cpu;private String screen;public MobilePhone(){}@Overridepublic String toString(){return this.name+"-"+this.cpu+"-"+this.screen;}
}
// 定义builder接口
abstract class Builder {public static final MobilePhone mobilePhone = new MobilePhone();private String name;private String cpu;private String screen;abstract void buildName();abstract void buildCpu();abstract void buildScreen();public MobilePhone createPhone(){return mobilePhone;}
}
class IphoneBuilder extends Builder{@Overridepublic void buildName() {mobilePhone.setName("iphoneName");}@Overridepublic void buildCpu() {mobilePhone.setCpu("iphoneCpu");}@Overridepublic void buildScreen() {mobilePhone.setScreen("iphoneScreen");}@Overridepublic MobilePhone createPhone() {return mobilePhone;}
}
class SanXinBuilder extends Builder{@Overridepublic void buildName() {mobilePhone.setName("三星1.0");}@Overridepublic void buildCpu() {mobilePhone.setCpu("三星8G");}@Overridepublic void buildScreen() {mobilePhone.setScreen("三星56寸");}@Overridepublic MobilePhone createPhone() {return mobilePhone;}
}
// 创建Director 通过有参构造器注入一个具体的builder,在核心方法construct方法完成各个组件的具体组装,并返回最后组装出来的对象
class Director{private Builder builder;public Director(Builder builder){this.builder = builder;}public MobilePhone construct(){builder.buildName();builder.buildCpu();builder.buildScreen();return builder.createPhone();}
}
http://www.yayakq.cn/news/795959/

相关文章:

  • 同仁微网站建设工作室南王科技:美方裁定公司
  • 华为荣耀手机商城官方网站南京博物馆网站哪家做的
  • 短链接转换网站医药类网站前置审批
  • 河南建设工程质量监督局网站宁波网站制作工具
  • 滴滴网站建设流程图徐州网站的优化
  • 专门做眼镜的国外网站广州网站优化运营
  • 电子商务网站建设培训小结数字营销是什么
  • 哪家做公司网站网络舆情杂志
  • 一个做任务的网站怎么做物流网站
  • 鹤壁网站建设兼职兰州网络推广兰州网络推广
  • 营销型网站建设 多少钱大连网页制作美工
  • 成都市分类信息网站开发中国建设银行网址多少
  • 网站中的文章可以做排名吗wordpress 科技
  • 网站建设的部署淘宝网站建设流程
  • 建设部网站建造师管理号有网站怎么做seo推广
  • 怎么做刷赞网站域名通过了才可以做网站吗
  • 免费网站服务器租用上传视频网站源码
  • 做全景的h5网站黑马程序员线上课程
  • 淄博微网站建设营销助手app
  • 定州市建设工程信息网池州市网站建设优化
  • 网站做端口是什么问题河北百度竞价优化
  • lamp网站开发黄金组合北京工程交易信息网
  • 网站制作好在百度里可以搜到吗医院网站源码下载
  • 成都营销型网站设计做网站的流程分析-图灵吧
  • 招聘网站做销售怎么样国航网站建设
  • 北京网站推广|网站制作|网络推广|网站建设wordpress调整字体
  • 茶类网站建设方案培训心得体会500字
  • 空气净化器用什么网站做外贸网站行业
  • 微信广告服务商平台深圳网页制作搜行者seo
  • 建设网站套餐汕头市作风建设的网站