最新要闻
- 环球看点!买部iPhone 14要花你多少年薪?各国对比:国人要12% 印度近50%
- 环球焦点!山东人坐地铁不拉手环直接抓杆引围观:人均身高1米8名不虚传
- 12岁女孩玩手游充值近3万 父亲要求退被拒:网友热议不该退 家长原因
- 中秋节的儿童画怎么画_中秋节的儿童画怎么画简单的
- 今天二月二龙抬头!四六级、考研初试今起可查分 方法来了
- 天天百事通!一加11概念机官宣:背部蓝色灯带抢眼 极具辨识度
- 天天热文:小米13系列本周MWC 2023发布!卢伟冰:海外米粉翘首以盼
- 你怎么看?日本66%的高端外国人才是中国人:远超印度、韩国
- 环球观天下!NVIDIA为游戏玩家做了哪些贡献?DLSS、光追等4项技术还真少不了
- 世界观点:残忍没法看!大白鲨罕见"斩首"潜水员 2023年第一例鲨鱼吃人
- 27岁身高186cm的研究生 想捐精被拒:因为要不了那么多
- 【环球热闻】真服了 到底是谁还在支付宝里种树啊?
- 环球观天下!比亚迪立功 磷酸铁锂电芯份额暴增至67.5% 三元锂被甩远
- 世界热推荐:曲艺杂谈歌曲_曲艺杂谈
- 当前快讯:教育部寒假促就业“暖心行动”超9100家用人单位参加 提供岗位信息超49.1万条
- 全球今亮点!射击游戏大作《原子之心》8分好评 继承《生化奇兵》的遗志
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
信息:原来建造者模式是这样用的
概述
面临一个复杂对象的创建工作,通常由各个部分的子对象用一定的算法构成。子部件(对象)比较多,对象不能当作一个完整的对象或者产品使用(邮件:发件人,收件人、抄送人、主题、邮件内容)子部件需要按照一定的顺序赋值才有一定的意义,在某个子部件没有赋值之前,另一个子部件就无法赋值。
类图
注:该类图来源网上
需求
用组装电脑来说明,如果公司要采购一批电脑,此时采购员不可能自己去买各个组件并把它们组织起来,此时采购员只需要像电脑城的老板说自己要采购什么样的电脑就可以了,电脑城老板自然会把组装好的电脑送到公司。
【资料图】
未使用建造者模式的代码
////// 产品类 /// public class Computer { private List_servers = new List (); public void AddPart(string part) { _servers.Add(part); } public void ShowComputer() { foreach (var item in _servers) { Console.WriteLine($"正在安装{item}"); } } }
//C#控制台调用Computer computer = new Computer();computer.AddPart("i5的cpu");computer.AddPart("256G的硬盘");computer.AddPart("32G的内存");computer.AddPart("17寸的显示器");computer.AddPart("win7的操作系统");computer.ShowComputer();
以上就是组装电脑的代码,如果是个人组装一台,那这么玩某种程度上是可以的;对于公司而言,要采购一批电脑,这么玩效率就太低下了,采购员不可能挨个买零件回来自己组装。反正总的来说,浪费时间和精力,所有内容全部需要客户搞定,而且创建对象和客户端强耦合。
使用建造者模式的代码
public interface IBuilderComputer { //1 封装创建各个部件的过程 void BuildCpu(); void BuildDisk(); void BuildMemory(); void BuildScreen(); void BuildSystem(); //2、将创建好的复杂对象返回 Computer GetComputer(); }
public class MyDirectory { public void BuildComputer(IBuilderComputer builderComputer) { builderComputer.BuildCpu(); builderComputer.BuildDisk(); builderComputer.BuildMemory(); builderComputer.BuildScreen(); builderComputer.BuildSystem(); } }
////// 具体建造者一 /// public class GoodComputer : IBuilderComputer { private Computer _computer=new Computer(); public void BuildCpu() { _computer.AddPart("i7的cpu"); } public void BuildDisk() { _computer.AddPart("2T的固态硬盘"); } public void BuildMemory() { _computer.AddPart("32G的内存"); } public void BuildScreen() { _computer.AddPart("32寸的显示屏的内存"); } public void BuildSystem() { _computer.AddPart("win10的操作系统"); } public Computer GetComputer() { return _computer; } }
////// 具体建造者二 /// public class BadComputer : IBuilderComputer { private Computer _computer = new Computer(); public void BuildCpu() { _computer.AddPart("i3的cpu"); } public void BuildDisk() { _computer.AddPart("126的机械硬盘"); } public void BuildMemory() { _computer.AddPart("2G的内存"); } public void BuildScreen() { _computer.AddPart("14寸的显示屏的内存"); } public void BuildSystem() { _computer.AddPart("win7的操作系统"); } public Computer GetComputer() { return _computer; } }
////// 产品类 /// public class Computer { private List_servers = new List (); public void AddPart(string part) { _servers.Add(part); } public void ShowComputer() { foreach (var item in _servers) { Console.WriteLine($"正在安装{item}"); } } }
//C#控制台调用Console.WriteLine("建造者设计模式正式登场");IBuilderComputer b1=new GoodComputer();IBuilderComputer b2 = new BadComputer();MyDirectory directory = new MyDirectory();directory.BuildComputer(b1); var goodComputer= b1.GetComputer();goodComputer.ShowComputer(); directory.BuildComputer(b2); var badComputer= b2.GetComputer();badComputer.ShowComputer();
以上是使用建造者模式实现采购电脑的代码,现在仅仅是采购了2台,如果采购10台,那就很简单了。
建造者模式比较简单,其实像上面的类图已经说得很明确,abstractBuilder(抽象建造者)、ConcreteBuilder(具体建造者)、product(具体产品)、 Director(指挥者),只要掌握好这4个之间的关系,实现起来照猫画虎。
有人问建造者模式与工厂模式有什么区别?
1、建造者模式更加注重方法的调用顺序,工厂模式注重创建对象。
2、创建对象的力度不同,建造者创建复杂的对象,由各路复杂的部件组成,工厂模式创建出的对象都一样。
3、关注点不同,工厂模式只需要把对象创建出来就可以,而建造者不仅要创建出这个对象,还要知道这个对象由哪些部件组成。
4、建造者模式根据建造过程中的顺序不一样,最终的对象部件组成也不一样
总结
不知道大家用得建造者模式多不多,有人说他还没用过,其实像我们的.NetCore里面就有大量的建造者模式的使用,可以在梳理dotnetcore源码时多留意体会一下。有何疑问,欢迎交流。
信息:原来建造者模式是这样用的
环球看点!买部iPhone 14要花你多少年薪?各国对比:国人要12% 印度近50%
环球焦点!山东人坐地铁不拉手环直接抓杆引围观:人均身高1米8名不虚传
12岁女孩玩手游充值近3万 父亲要求退被拒:网友热议不该退 家长原因
中秋节的儿童画怎么画_中秋节的儿童画怎么画简单的
今天二月二龙抬头!四六级、考研初试今起可查分 方法来了
天天百事通!一加11概念机官宣:背部蓝色灯带抢眼 极具辨识度
每日消息!读Java实战(第二版)笔记16_组合式异步编程
天天热文:小米13系列本周MWC 2023发布!卢伟冰:海外米粉翘首以盼
你怎么看?日本66%的高端外国人才是中国人:远超印度、韩国
热门:kubernetes二进制部署(单节点)
环球速看:MyBatis plus 代码生成器
【世界聚看点】CSS概念与CSS选择器
环球观天下!NVIDIA为游戏玩家做了哪些贡献?DLSS、光追等4项技术还真少不了
世界观点:残忍没法看!大白鲨罕见"斩首"潜水员 2023年第一例鲨鱼吃人
27岁身高186cm的研究生 想捐精被拒:因为要不了那么多
【环球热闻】真服了 到底是谁还在支付宝里种树啊?
环球观天下!比亚迪立功 磷酸铁锂电芯份额暴增至67.5% 三元锂被甩远
世界热推荐:曲艺杂谈歌曲_曲艺杂谈
天天速递!vue-cli创建前端项目以及前后端交互
世界微动态丨记录一次HAWQ手工启动
当前快讯:教育部寒假促就业“暖心行动”超9100家用人单位参加 提供岗位信息超49.1万条
全球今亮点!射击游戏大作《原子之心》8分好评 继承《生化奇兵》的遗志
【世界播资讯】三步实现在ASP.NET Core Web API集成ChatGPT
环球即时:弯道超车 中国动力电池企业 “狂飙”入欧
全球快消息!i9-13900H+RTX 4060满血加持!华硕天选4酷睿版图赏
AMD不赞同NVIDIA:游戏卡加太多AI徒增成本 玩家买单
环球关注:AtCoder Beginner Contest 289
当前看点!女子因宠物猫去世欲轻生 网友吵翻:猫是“家人”为何不可?
4799元 小米Redmi Book Pro15增强版上架:8核升级12核
6.1英寸小屏手感绝佳!三星Galaxy S23图赏
环球快报:肯德基麦当劳的汉堡越卖越小引热议:20年基本没涨价真良心?
焦点滚动:02月20日20时山东滨州昨日累计报告阳性感染者确诊250例 怎么判断自己是否属于轻型感染者
火山引擎 DataTester:在广告投放场景下的 A/B 实验实践
第120篇: DOM编程(常用操作、动态脚本、样式及动态表格)
世界讯息:可孚医用N95口罩30只装 灭菌独立包装19.9元大促
男子因缺钙CT图像中没有肋骨:“像一个透明人”
全球新消息丨189元 OPPO Enco Air3无线耳机上架:HiFi 5 DSP、支持蓝牙5.3
腾讯XR业务转向:或将合作引进Quest 2头显
闲鱼上买显示器靠谱吗?注意这几点就可以
世界要闻:物联网平台选型葵花宝典:盘点开源、SaaS及通用型平台的优劣对比
【Unity AR】
AR精灵制作学习记录 【天天快播报】项目开发软件架构选择指南
飞利浦推出两款44.5英寸带鱼屏:1500R大曲率、75Hz刷新率
行驶中小车后备箱塞人露双脚!司机称其喝醉了:遭网友谴责
世界播报:低头族注意了!9岁女孩长期低头颈椎老如50岁
领1030元大额券:骆驼户外徒步鞋179元起大促
世界观点:亚马逊要求员工一周到岗工作3天:公司一度像个鬼城
K8S-deployment.yaml文件详解
开心档-Git 基本操作
资讯推荐:制造业做信息化(IT管理、程序员)有前途吗?---浅谈信息系统规划
全球观点:记录--什么时候会阻塞HTML文档渲染过程?
【Oculus Interaction SDK】(十一)关于手势识别中手势设置的详细信息
天天热资讯!埃塞俄比亚政府和“提人阵”武装达成停火协议
天天新消息丨义乌自己的全球支付工具!义支付发布:打通16个币种
这待遇简直了!美团外卖进军香港 正疯狂招骑手:月入3万+
消息!手机套餐费太贵 韩国三大运营商被批:是否串通涨价
与剧版强烈反差!《三体》动画豆瓣跌至3.9分:官方已停播
特斯拉最入门车型国内现身?别被骗了:“披着狼皮的羊”而已
关注:Camunda(一)---安装和简单示例
女子在桃李面包中吃出带锈刀片 官方:不存在使用该刀片的生产环节
环球快看:手机寒气仍存 5G巨头中兴被曝优化人员 回应称正常调整
世界观焦点:蔚来ET9要来了?号称“蔚来版迈巴赫” 屏幕开始横过来
掌权八年后上汽大众换帅:贾健旭接棒
大嘴猴50S精梳棉男士四角裤狂促:券后每条不到10元!
WPF学习_day1
K8S-Service的yaml文件详解
全球时讯:【机器视觉】-什么是机器视觉?
当前报道:游戏王dm新马甲_[游戏王DM]羁绊
全球热点!张艺谋监制!北京冬奥拍成电影了:《北京2022》预告片发布
世界视讯!提前!韩国欲2028年推6G网 速度有多快?5G是高铁 6G就是飞机
全球首发5.5G 高通骁龙X75基带不再公布速率:峰值没啥意义
极氪汽车被指销售欺诈!车主集体投诉:退一赔一
世界新动态:ChatGPT火了 中国电信股价大涨50%:底层技术早有布局
世界观热点:璞华易构低代码平台,真正领跑未来的敏捷软件开发方案!
CXPACKET等待类型分析
华晨宝马第500万辆下线!东北老工业基地全力发展新能源车 沈阳比肩深圳
天天新消息丨印度3年内将成为主要电信出口国 5G堆栈“已准备就绪
光环退却 曝神车雷克萨斯ES 300H大优惠:广州35万可落地
世界新资讯:神似小红书 微信为什么要做“小绿书”?
李安:下部电影《李小龙》不会用120帧 挑战观众习惯
当前信息:【踩坑记录】SpringBoot跨域配置不生效
迈柯唯Maquet协议对接(呼吸机、麻醉机)FLOWi SERVOi
【当前独家】远程服务调用(RPC与Rest本质区别)
王予嘉图片_王予嘉
焦点快报!《消费者报告》:宝马制造的汽车最高 路虎果然名不虚传
讯息:全国110个城市建成千兆城市!运营商喊话继续加速千兆宽带:每月198 还能便宜
要闻速递:K8S-Pod的yaml文件详解
全球热推荐:ChatGPT:HuggingFace使用GPT-2模型并额外语料训练
每日观点:第一周学习--linux
环球速讯:消灭挖孔!努比亚首款屏下摄像头新机Z50 Ultra入网
每日资讯:针对富士X卡口设计:腾龙宣布开发新超广角变焦镜头
通讯!小米汽车全新谍照曝光:定位三厢、车头极长
Redis缓存穿透 && 缓存击穿 && 缓存雪崩
环球热头条丨机器学习-集成学习XGBoost
速读:科创信息:公司目前涉及少量军工业务
世界快报:二月二龙抬头来了!明晚10点龙形天象将出现在夜空 天文专家科普
1899元!小米发布智能门锁M20大屏猫眼版:续航1整年
天天热点!直到丈夫临死 我才发现30多年前闻到的“怪味”竟是大病预兆!
全球通讯!开车方便了!内地与中国澳门签署驾驶证互认换领协议:免试