一、建造者

package com.study.builder_patternabstract class AbstractComputerBuilder {/*** 设置显示器*/abstract fun buildMonitor(monitor:String)/*** 设置鼠标*/abstract fun buildMouse(mouse:String)/*** 设置主机*/abstract fun buildHost(host:String)/*** 设置cpu*/abstract fun buildCPU(cpu:String)abstract fun makeComputer():Computer
}
package com.study.builder_pattern/*** 实际建造者*/
class ComputerActualBuilder:AbstractComputerBuilder() {private val computer=Computer()override fun buildMonitor(monitor: String) {computer.monitor=monitor}override fun buildMouse(mouse: String) {computer.mouse=mouse}override fun buildHost(host: String) {computer.host=host}override fun buildCPU(cpu: String) {computer.cpu=cpu}override fun makeComputer(): Computer =computer
}
package com.study.builder_pattern/*** 电脑商店(其实用户可以自己组装)*/
class ComputerStore(private val computerBuilder: AbstractComputerBuilder) {fun makeComputer( monitor:String="", mouse:String="", host:String="", cpu:String="") = computerBuilder.run {buildMonitor(monitor)buildMouse(mouse)buildHost(host)buildCPU(cpu)makeComputer()}
}

二、产品类

package com.study.builder_patterndata class Computer(var monitor:String="",var mouse:String="",var host:String="",var cpu:String="")

三、主程序调用

package com.study.builder_pattern/*** 建造者模式** 定义:(与工厂模式相比侧重于了解产品创建的细节)将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示用户只需指定需要建造的类型就可以得到它们,建造过程及细节不需要知道类型:创建型适用场景:如果一个对象有非常复杂的内部结构(很多属性)想把复杂对象的创建和使用分离优点:封装性好,创建和使用分离扩展性好、建造类之间独立、一定程度上解耦缺点:产生多余的Builder对象产品内部发生变化,建造者都要修改,成本较大*/
fun main() {val computerStore=ComputerStore(ComputerActualBuilder())computerStore.makeComputer()val computer = with(ComputerStore(ComputerActualBuilder())) {makeComputer("华为显示器", "华为鼠标", "华为主机", "华为cpu")}print(computer)}

四、运行结果

07_建造者模式(方式一)相关推荐

  1. activexobject对象不能创建_【设计模式】建造者模式:你创建对象的方式有它丝滑吗?...

    目录 什么是建造者模式 为什么要使用建造者模式 构造函数创建对象 set方式构建对象 java实现建造者模式 第一种实现方式 第二种方式 建造者模式与构造函数的对比 建造者模式与工厂模式的对比 总结 ...

  2. 【设计模式】建造者模式:你创建对象的方式有它丝滑吗?

    目录 什么是建造者模式 为什么要使用建造者模式 构造函数创建对象 set方式构建对象 java实现建造者模式 第一种实现方式 第二种方式 建造者模式与构造函数的对比 建造者模式与工厂模式的对比 总结 ...

  3. java建造者模式 ppt_23种设计模式详解及实现方式.ppt

    第四讲 建造者模式(Buider) 场景-翻译机 MM最爱听的就是"我爱你"这句话了,见到不同地方的MM,要能够用她们的方言跟她说这句话哦,我有一个多种语言翻译机,上面每种语言都有 ...

  4. 设计模式之建造者模式(生成器模式、Builder)摘录

    23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式包括:1.FactoryMethod(工厂方法模式):2.Abstract Factory(抽象工厂模式):3.Sin ...

  5. 建造者模式java_java设计模式3——建造者模式

    java设计模式3--建造者模式 1.建造者模式介绍: 建造者模式属于创建型模式,他提供了一种创建对象得最佳方式 定义: 将一个复杂对象的构建和与它的表示分离,使得同样的构建过程可以创建不同的表示 主 ...

  6. 说说设计模式~建造者模式(Builder)

    建造者模式是我的"设计模式"里创建型模式里的最后一篇,这种模式在实现中,很多架构都用到了,如MVC,MVP,MVVM,它们都是有建造者模式的精髓的,即,创建与表现分享,我们的MVC ...

  7. 第三天:创建型模式--建造者模式

    零.建造者模式 什么是建造者模式 使用多个简单的对象一步一步构建成一个复杂的对象.这种类型的设计模式属于建造者模式,它提供了一种创建对象的最佳方式,将一个复杂对象的构造过程与其表象分离,同一个构造过程 ...

  8. 创建型设计模式之建造者模式(Builder)

    结构 意图 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 适用性 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时. 当构造过程必须允许被构造的对象有不 ...

  9. Net设计模式实例之建造者模式(Builder Pattern)(2)

    四.案例分析(Example) 1.场景 假设房子只有房顶和墙(Roof And Walls)<?XML:NAMESPACE PREFIX = O /> Jane和 Joe两个客户需要从建 ...

最新文章

  1. JS设计模式(13)状态模式
  2. 为什么parsefloat加出来还是字符串_为什么水质检测达标家里的自来水管流出来的水却还是脏的?...
  3. python 自定义装饰器 来验证函数参数
  4. SwipeRefreshLayout和RecyclerView滑动冲突的解决
  5. Bugku—MISC题总结
  6. win7蓝屏_win7电脑蓝屏怎么办
  7. Matlab生成棋盘格点图
  8. Java-IO流之BufferedReader 和BufferedWriter的使用和原理
  9. 南孚电池:如何从0-1建立经营分析报表平台,助力集团转型?
  10. TOJ3651确定比赛名次
  11. 基础—机器学习—softMax regression
  12. ORACLE错误编码大全
  13. python libusb_使用python开发usb的两种方式(windriver与pyusb)
  14. xml转json的两种方法
  15. revit2016对应lumion版本_revit如何导入lumion?revit文件转化成lumion文件有诀窍!
  16. 缓存学习总结4(分布式缓存)
  17. Resultful API的拦截(过滤器——Filter)
  18. free spaces
  19. BI(商业智能)的未来?
  20. 学生id号码是什么意思_学生学籍中的ID号是学籍号吗?

热门文章

  1. python描述回文素数_回文素数-随心随性无为而为-51CTO博客
  2. 涪陵创新计算机学校是什么专业,重庆市涪陵创新计算机学校开展增材制造技术教学研讨会...
  3. 截至2015年工作中接触集成过的硬件设备整理记录
  4. (附源码)springboot萌宠宠物网店的开发与设计 毕业设计 011042
  5. elasticsearch 基础 —— Query String
  6. 领导艺术的“七棵树”
  7. 『往事』之---我的童年少年时代
  8. 大数据ClickHouse(二十):ClickHouse 可视化工具操作
  9. WannaCry勒索病毒,企业文件安全保护的启蒙课
  10. Android OpenGl ES使用原理总结与代码示例