只关心零件的Buider

2024-05-10 03:08
文章标签 零件 关心 buider

本文主要是介绍只关心零件的Buider,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

只关心零件的Buider

建造者模式的初衷是为了将对象的构建与表示分离,封装一个对象的不懂表现方式。但往往实习使用中,我们的需求并没有那么多的表现方式,且遇到最多的Builder也不是定义中的Builder。

==============

定义

传统定义:将复杂对象的构建与它的表示分离,使得同样的构建有着不同的表现方式。

实际使用的Builder:依照赋予的不同参数,去创建不同表现的对象。

这是我们最常见到的Builder形式。

embedManager = new EmbedManager.Builder(this, layoutResID).addToolbar(R.layout.widget_toolbar, R.id.id_tool_bar).addTopWidget(LayoutInflater.from(this).inflate(R.layout.widget_top_view, null)).addBottomWidget(LayoutInflater.from(this).inflate(R.layout.widget_bottom_view, null)).addCenterTipView(new NoDataTips(this)).addLoadView(LayoutInflater.from(this).inflate(R.layout.widget_loading_view, null)).build();

演化

实际过程中,普通建造者模式的使用场景并不是特别多。在实际需求中,最多的需求反而是参数的不确定。什么是参数的不确定呢?

通常我们给一个类传参时,使用这样的方式:

obj.setParam(int arg1,int arg2,int arg3,int arg3);

那么问题来了,如果我只有arg1,和arg2需要传递怎么办?

arg3传null? 增加新的重载方法? 哦~这样的体验说实话并不好。有更好的替代方式吗?有的

就是上面你看到的形式。通常我们这样定义,依照代码注释,你可以很轻松的学会这样的设计技巧。

class EmbedManager {private Object arg1;private Object arg2;private Object arg3;public EmbedManager(Object arg1,Object arg2,Object arg3){if(arg1 != null){。。。}if(arg2 != null){。。。}if(arg3 != null){。。。}。。。。。}//负责创建EmbedManager的建造者public static class Builder{//arg1是必须参数private Object arg1;//arg2,arg3是可选参数private Object arg2;private Object arg3;//必须参数通过构造函数传递public Builder(Object arg1){this.arg1 = arg1;}public Builder setArg2(Object arg2){this.arg2 = arg2;//设置成功后返回this本对象return this;}public Builder setArg3(Object arg3){this.arg3 = arg3;//设置成功后返回this本对象return this;}//最后负责创建的类public EmbedManager build(){EmbedManager em = new EmbedManager(arg1,arg2,arg3);...em.setTitle("xxxx");em.set~em.set~return em;}}
}

优点

  • 你可以很轻易的发现它的优点,将对象复杂创建过程进行封装,实现了解耦。

  • 使用体验的优化,参数控制更加容易。

  • 更灵活的配置化实现

误区

无论是原本的建造者模式,还是演化后的建造者模式,在合适的场景下都非常优秀,很难找到缺点。

这里就说一个演化后的建造者使用误区:

有些人因为喜欢演化后的建造者模式清晰的写法而使用了它。但它却用文档形式硬性的告诉你,我的这些个参数你必须都有,这并不是一个很好的使用。

既然使用了这样形式的配置化写法,就隐式的告诉了用户我的这些参数是可有可无的,这样用文档形式规定是非常容易出错的。

这篇关于只关心零件的Buider的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/975259

相关文章

【C++】1326. 需要安排几位师傅加工零件

问题:1326. 需要安排几位师傅加工零件 类型:贪心 题目描述: 某工厂有 n 个零件加工的师傅,每位师傅每天能够加工出不同数量的零件。 现有 m 个零件要求一天加工完,请问该工厂最少需要派几个师傅来完成这次零件加工任务,如果安排所有的师傅都参与加工也不能在一天内完成任务,请输出NO。 输入: 第一行有两个整数,用空格隔开; 第一个整数代表要加工的总零件个数 m (m≤10^6),

OCC中如何识别装配体中多次引用的同一零件体

1. 问题背景 在CAD(计算机辅助设计)系统中,装配体通常由多个零件(或称为组件)组成,这些零件可能在不同的装配体中多次引用或共享。例如,一个标准的螺栓或轴承可能在多个装配体中被使用,而在这些装配体的设计中,这些标准零件可能被多次引用。 在采用CAD二次开发或者基于开源平台Open cascade进行开发时,如何准确地识别这些重复的零件体,是一个重要的问题,本文以Open cascade为例

【有诗云】姐姐,今夜我不关心人类,我只想家乡的雪

我想我是个诗人 诗经楚辞,关关雎鸠 秦文汉赋三国篇章 唐诗宋词 海上生明月 何当共剪西窗烛 拣尽寒枝不肯栖 到黄昏 古元曲近戏剧今小品相声 舞蹈音乐电影话剧 我想我是个诗人 三国水浒红楼西游 明清小说 杂文白话English 往前五百年 往后五百年 作词作曲英雄辈出唱作俱佳 我想我可能只是半个诗人 这里有月亮 这里没有梧桐 这里没有你我他 这里有黄昏朝阳起

第2章 Rust初体验7/8:错误处理时不关心具体错误类型的下划线:提高代码可读性:猜骰子冷热游戏

讲动人的故事,写懂人的代码 2.6.6 用as进行类型转换:显式而简洁的语法 贾克强:“大家在查看Rust代码时,可能会注意到这一句。在这里,如果我们不使用as i32,编译器会报错,因为它在u32中找不到abs()方法。这是因为prev和sum_of_two_dice都是u32类型,u32类型并不支持abs()方法。所以,我们需要使用as关键字把它们都转换成支持abs()方法的i32类

一个男人关心的东西决定了他的层次(转)

一、拥有自信和风度。 男人到了二十几岁后,就要开始学着用心去经营自己了,它体现在自己的思想与涵养上。自信是一个男人最重要的品质,自信的男人就你像一只在暴风雨中战斗的海鸥。海鸥所要说的只有一句话“让暴风雨来的再猛烈些吧”,只因为它无所畏惧。一个自信的男人,总是能够感染别人,无论这些人是朋友还是敌人。要使别人对你有信心,就必须要先对自己充满信心。自信的男人可以战胜一切困难。 一个有风度的男人就像

catia零件装配时预览零件的形状

这样的显示方式看不到 选择大或中图标就可预览零件形状

catia零件装配中通过指南针移动零件

1 将零件导入进来后 2 把指南针移动到零件上 具体移动哪个可以通过模型树点击选中,选中那个就可以移动那个。 这种情况需要注意的是 需要双击选择要移动零件的父节点 如下图,Product2蓝色表示是激活的,这样才可以单击选中下面的零件后通过指南针操作。 否则如果激活的是下南的零件那不能操作

花键轴类零件加工方法有哪些?

花键轴零件的加工方法 一辆普通中型卡车上约含 30 个花键轴零件, 通常用在离合器、变速器、传动轴总成、差速器、转向总成等位置。 花键轴零件的加工工艺是传统的切削加工和塑形成形加工两种。传统工艺如下的8个主要工序: 下料→锻造毛坯→毛坯加工→外花键加工→零件热处理前检查→热处理→热处理后→精加工→最终检查 其中,花键的齿面加工有成型法和展成法,具体具体看下表: 从上表 可以看出, 成

Solidworks 提取模型中的零件,并组合成一个新的零件,放入特征库

对方发来一个STP文件,其中有模型的部分零件想为我所用。    Shift键+鼠标左键 选取需要的零件     在选好零件上右键,选择“孤立” 左边找到部件,ctrl+左键选中,选择“插入到新零件” 点 绿色 勾 就选择保存类型,完成 。 打开这个新生成的sldprt格式文件用Solidworks 打开另存为的.prt的原装配体文件,此时零件1和2都变为实体: 选择插入-特征

2024上海中小学生古诗文大会方案已发布,家长孩子最关心10个问题

昨天(2024年5月30日)下午15点,上海中小学生古诗文大会组委会通过两个公众号发布了《2024上海中小学生古诗文大会系列活动方案出炉》的推文(下称《方案》)。如我之前的分析和预测,5月份会发布今年的中小学生古诗文大会的相关安排,尽管放在5月底,但也不算离谱。 为方便大家了解和研究,我把通知和方案做成了Word版本,需要的家长请到文末了解、获取。 推文发布以后,多个家长朋友来咨询我一