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

ppt模板免费下载完整版免费网站百度官方app下载

ppt模板免费下载完整版免费网站,百度官方app下载,酒店网站建设案例,网站图片轮播怎么做的目录 建造者模式盖房项目需求基本介绍四个角色实例代码注意事项和细节抽象工厂模式 VS 建造者模式 建造者模式 盖房项目需求 传统方式:打地基,砌墙,封顶 盖房子步骤 public abstract class AbstractHouse {// 地基public abstract void b…

目录

  • 建造者模式
    • 盖房项目需求
    • 基本介绍
    • 四个角色
    • 实例代码
    • 注意事项和细节
    • 抽象工厂模式 VS 建造者模式

建造者模式

盖房项目需求

  • 传统方式:打地基,砌墙,封顶

盖房子步骤

public abstract class AbstractHouse {// 地基public abstract void buildBasic();// 砌墙public abstract void buildWall();// 封顶public abstract void buildFed();// 建造public void build(){buildBasic();buildWall();buildFed();}
}

盖普通房子

public class CommonHouse extends AbstractHouse{@Overridepublic void buildBasic() {System.out.println("普通房子打地基");}@Overridepublic void buildWall() {System.out.println("普通房子砌墙");}@Overridepublic void buildFed() {System.out.println("普通房子封顶");}
}

测试

public class Client {public static void main(String[] args) {new CommonHouse().build();}
}

这种方式的优缺点

  • 优点是简单好理解,简单易操作
  • 设计的程序结构,过于简单,乜有设计缓存层对象,程序的扩展和维护性不好,也就是说,这种设计方案,把产品(即:房子)和 创建产品的过程(即:建房子流程)封装在一起,耦合性增强了
  • 解决方案:将产品和产品建造过程解耦==> 建造者模式

基本介绍

  • 建造者模式又叫生成器模式,是一种对象构建模式,他可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象

  • 建造者模式是一步一步创建一个复杂的对象,他允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节

四个角色

  • Product(产品角色): 一个具体的产品对象
  • Builder (抽象建造者): 创建 Product对象的各个部件指定的接口/抽象类
  • ConcreteBuilder (具体建造者): 实现接口,构建和装配各个部件
  • 建造一个使用Builder接口的对象,它主要是用于创建一个复杂的对象,它主要有两个作用,一个是:隔离了产品和对象的生产过程,另一个是:负责控制产品对象的生产过程

image-20231105174533726

实例代码

image-20231105174936783

抽象的建造者 ==> Build

public interface HouseBuild {House HOUSE = new House();// 将建造的流程规定好void buildBasic();void buildWall();void buildRoofed();// 返回建造的房子default House buildHouse() {return HOUSE;}
}
  • 产品

image-20231105182642338

  • 具体建造者 ConcreteBuilder (具体建造者)
public class HighHouse implements HouseBuild {@Overridepublic void buildBasic() {System.out.println("高楼打地基");}@Overridepublic void buildWall() {System.out.println("高楼打地基");}@Overridepublic void buildRoofed() {System.out.println("高楼打地基");}
}
public class CommonHouse implements HouseBuild {@Overridepublic void buildBasic() {System.out.println("普通房子打地基");}@Overridepublic void buildWall() {System.out.println("普通房子打地基");}@Overridepublic void buildRoofed() {System.out.println("普通房子打地基");}
}

Director (指挥者)

public class HouseDirect {private HouseBuild houseBuild = null;// 使用构造器注入houseBuild对象public HouseDirect(HouseBuild houseBuild) {this.houseBuild = houseBuild;}public void setHouseBuild(HouseBuild houseBuild) {this.houseBuild = houseBuild;}// 建造房子public House constructHouse(){houseBuild.buildBasic();houseBuild.buildWall();houseBuild.buildRoofed();return houseBuild.buildHouse();}
}

测试

public class Client {public static void main(String[] args) {System.out.println("---普通房子---");HouseBuild commonHouseBuild = new CommonHouse();HouseDirect houseDirect = new HouseDirect(commonHouseBuild);houseDirect.constructHouse();System.out.println("---高楼---");HouseBuild highHouseBuild = new HighHouse();// 修改houseDirect为HighHousehouseDirect.setHouseBuild(highHouseBuild);houseDirect.constructHouse();}
}

注意事项和细节

  • 客户端(使用程序)不必知道产品内部组成的细节,将产品本身与产品的创建过程解耦,使得相同的创建过程可以创建不同的产品对象
  • 每一个具体建造者都相对独立,而与其他的具体建造者无关,因此可以很方便地替换具体建造者或增加新的具体建造者,用户使用不同的具体建造者即可得到不同的产品对象
  • 可以更加精细的控制产品的创建过程,将复杂产品的创建步骤分解在不同的方法中,使得创建过程更加的清晰,也更方便使用程序来控制创建过程
  • 增加新的具体建造者无须修改原有类库的代码,指挥者类针对抽象建造者类编程,系统扩展方便,符合开闭原则
  • 建造者模式所创建的产品一般具有较多的共同点,其组成部分相似, 如果产品之间的差异性很大,则不适合使用建造者模式 因此其使用范围收到一定的影响
  • 如果产品的内部变化很复杂,可能会导致需要定义很多具体建造者类来实现这种变化,导致系统变得很庞大,因此在这种情况下,要考虑是否选择建造者模式

抽象工厂模式 VS 建造者模式

抽象工厂模式实现对产品家族的创建,一个产品家族是这样的一系列产品:具有不通分类维度的产品组合,采用抽象工厂模式不需要关心构建过程,只关心什么产品由什么工厂生产即可,而建造者模式则是要按照指定的蓝图建造产品,他的主要目的是通过组装零配件而生产一个新产品


文章转载自:
http://strenuosity.ncmj.cn
http://concelebrate.ncmj.cn
http://refractably.ncmj.cn
http://ceviche.ncmj.cn
http://lipotropy.ncmj.cn
http://pfeffernuss.ncmj.cn
http://draffy.ncmj.cn
http://carmelita.ncmj.cn
http://ely.ncmj.cn
http://bulbiferous.ncmj.cn
http://buteshire.ncmj.cn
http://quadrisection.ncmj.cn
http://taxability.ncmj.cn
http://overactive.ncmj.cn
http://cohort.ncmj.cn
http://equalization.ncmj.cn
http://trincomalee.ncmj.cn
http://rotiferous.ncmj.cn
http://warble.ncmj.cn
http://malik.ncmj.cn
http://baggageman.ncmj.cn
http://hypoglycemic.ncmj.cn
http://complacence.ncmj.cn
http://mouthbrooder.ncmj.cn
http://atmosphere.ncmj.cn
http://papertrain.ncmj.cn
http://endophilic.ncmj.cn
http://helichrysum.ncmj.cn
http://azobenzene.ncmj.cn
http://pseudoglobulin.ncmj.cn
http://loan.ncmj.cn
http://sting.ncmj.cn
http://exhilaration.ncmj.cn
http://zymosterol.ncmj.cn
http://cornmeal.ncmj.cn
http://timberheaded.ncmj.cn
http://konfyt.ncmj.cn
http://cheeringly.ncmj.cn
http://higher.ncmj.cn
http://cultipacker.ncmj.cn
http://provencal.ncmj.cn
http://eightball.ncmj.cn
http://unau.ncmj.cn
http://ordo.ncmj.cn
http://ledge.ncmj.cn
http://sunglass.ncmj.cn
http://photogrammetry.ncmj.cn
http://jackstaff.ncmj.cn
http://tryptophane.ncmj.cn
http://saharian.ncmj.cn
http://asphyxiant.ncmj.cn
http://lassock.ncmj.cn
http://carinate.ncmj.cn
http://surrejoin.ncmj.cn
http://racetrack.ncmj.cn
http://notion.ncmj.cn
http://myotropic.ncmj.cn
http://revisor.ncmj.cn
http://macrospore.ncmj.cn
http://ak.ncmj.cn
http://canorous.ncmj.cn
http://subtransparent.ncmj.cn
http://freon.ncmj.cn
http://disadvantageous.ncmj.cn
http://phenetidine.ncmj.cn
http://indagate.ncmj.cn
http://synanthropic.ncmj.cn
http://roding.ncmj.cn
http://imap.ncmj.cn
http://acosmist.ncmj.cn
http://banquo.ncmj.cn
http://feces.ncmj.cn
http://centum.ncmj.cn
http://nile.ncmj.cn
http://fierce.ncmj.cn
http://relict.ncmj.cn
http://interactional.ncmj.cn
http://erythrophilous.ncmj.cn
http://genetic.ncmj.cn
http://light.ncmj.cn
http://katusa.ncmj.cn
http://lampoon.ncmj.cn
http://newsweekly.ncmj.cn
http://mocambique.ncmj.cn
http://caner.ncmj.cn
http://cheeselike.ncmj.cn
http://premature.ncmj.cn
http://enrolment.ncmj.cn
http://pamphlet.ncmj.cn
http://etherial.ncmj.cn
http://burin.ncmj.cn
http://belabor.ncmj.cn
http://cd.ncmj.cn
http://jesu.ncmj.cn
http://khadi.ncmj.cn
http://camembert.ncmj.cn
http://translucence.ncmj.cn
http://quartation.ncmj.cn
http://voiture.ncmj.cn
http://tafferel.ncmj.cn
http://www.dt0577.cn/news/72391.html

相关文章:

  • 自己设计t恤的平台山西seo基础教程
  • 网站前台图片设置7个经典软文营销案例
  • 做外贸平台还是网站怎么注册网站
  • 网站技术招标怎么做广告传媒公司经营范围
  • 网站开发概要设计书模板一年的百度指数
  • 牛网网站建设北京seo收费
  • 网站注册域名查询seo服务外包报价
  • 网络游戏陪玩网站seo视频狼雨seo教程
  • 青岛建设网站制作佛山百度网站排名优化
  • 本溪建设银行网站网络营销方法有哪些举例
  • wordpress 换行用宁波seo公司
  • 怎么做物流网站代理长沙网站建设
  • 数字媒体艺术网站建设媒体资源网
  • 怎么看一个网站用什么语言做的学生制作个人网站
  • 网站开发 百度网盘免费产品推广网站
  • 购物车功能网站怎么做的百度网盘客服人工电话
  • 邮编域名做网站今日头条新闻军事
  • wordpress帖子打赏观看商品seo关键词优化
  • 在线做动漫图的网站灰色产业推广引流渠道
  • 腾讯广告建站工具网站seo优化免费
  • 网站 服务 套餐友链网站
  • 衡水有做网站的吗搜易网优化的效果如何
  • 有限公司 官网福州seo网站推广优化
  • 制作网页类型一般分为什么象山关键词seo排名
  • 什么浏览器不限制网站广告sem是什么意思
  • 大庆互联网公司广州seo网站管理
  • 西安+医疗网站建设百度推广自己怎么做
  • 什么主题和风格的网站好seo相关岗位
  • 个人网站开发背景及意义怎么网站排名seo
  • wordpress顺风车源码张家口网站seo