反模式设计_设计模式:模式或反模式,这就是问题

反模式设计

我最近遇到了Wiki页面“ Anti-pattern” ,其中包含详尽的反模式列表。 其中一些对我来说很明显。 他们中的一些让我想了一下,其他的让我想了更多。 然后,我开始在页面上查找反模式“ singleton”,但找不到。 (文本搜索停止在单线态…)

单例是模式还是反模式?

别担心。 我不会谈论单例。 网上对此进行了足够多的讨论 。 现在,让我仅以单例为例。 在单例的情况下,图案和反图案之间没有清晰的界线。

举个例子,单例可以很容易地被使用,它很容易理解并且是一个很好的例子。 单例一直很流行,直到几年前才开始被认为是反模式。 有什么变化? 计算机科学家会变得更聪明,发现他们认为良好的模式实际上是反模式吗? 从一开始,单例就是一个反模式,我们只是不知道吗? 还是单身人士本身已经从成为好的设计模式变成了反模式?

我认为,答案很奇怪:这两种情况。 它与物理理论非常相似。 牛顿定理说,力与加速度和身体质量成正比。 爱因斯坦说这是不正确的,并且速度越大,误差越大。 牛顿错了吗? 是的,在某种意义上。 我们还能使用牛顿定律吗? 是的,我们可以,实际上是在低速情况下(与光速相比)。

从一开始单身人士就是坏人吗? 是的,和现在一样多。 我们还可以使用单例吗? 是的,我们可以,实际上,在低耗速的情况下我们会这样做……在简单问题的情况下,我们不需要单身人士成为反模式的考虑。

反模式似乎与环境有关。 在这种情况下,环境比在物理情况下要复杂得多。 量子理论,相对论或不可逆热力学(我父亲是教授)很简单,因为它们不考虑人类。 他们只是关于这个问题。

编程是关于人的。

这是我们经常忘记的事情。 当一切开始的时候,都是关于位和字节,寄存器,存储器和十六进制代码的。 程序正在运行并且执行不佳。 但是后来变得越来越复杂。 计算机科学成为信息技术。 越来越多的人使用IT,越来越多的人编写程序。 他们是这样做的程序员。 即使是一个相对简单的项目,如果要商业化的话,也需要六到八个程序员。 它们也是“模式或反模式”依赖的环境的一部分。

该环境还包含简单的事物,例如框架,编程语言,操作系统和其他技术细节,但它们单独或一起的复杂性都无法与人类媲美。

反设计模式

在就模式与反模式辩论做出决定时,许多人会问一个问题:模式可以用于什么? 这有什么用? 有什么好处? 这些是重要的问题。 如果没有好处:没有理由考虑这种模式。 但这并不能使其成为反模式。 如果没有好处,那么这种方法根本不是一种模式。 重要的问题是,它有什么弊端? 一般的Joe可以通过哪种方式来构建结构。 采用该模式的人射击自己的腿的可能性有多大? 这不是新事物。 博弈论还指出,这对于最小化最大损失比最大化可能的收益更为重要。

看一个模式,你能告诉我吗? 可能不是。 在某些情况下,是的。 恭喜,您找到了反模式。 在其他情况下,您找不到任何错误的用法。 这并不意味着没有。 时间会证明。 一般的乔会来,并将以您在最疯狂的梦中无法想象的方式(或就此而言,夜马)使用这种模式。

因此,反模式并不是天生的坏事,就像枪支不会杀死人一样。 错误使用模式是不好的。 当人们倾向于以错误的方式使用模式时,则它是一种反模式。 单例就是这种情况。

类似的事情可以通过代码注释捕获。 当我开始学习Pascal编程时,我们的老师要求50%的代码必须有意义。 今天怎么样? 干净的代码说注释是邪恶的。 有点。 太多的评论气味。 有时我发现自己参与的项目完全被驱逐。 甚至不允许使用Javadoc。 奇怪的? 这只是他们应用干净代码模式的方式。

因此,这些天开始困扰我的问题是,在编程中使用设计模式是一种好模式还是本身就是一种反模式?

参考: 设计模式:模式或反模式,这是 Java Deep博客上我们JCG合作伙伴 Peter Verhas 提出的问题 。

翻译自: https://www.javacodegeeks.com/2014/02/design-patterns-pattern-or-anti-pattern-that-is-the-question.html

反模式设计

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

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

相关文章

js中的数据类型分为两大类分别是什么_数据类型有这么重要吗?

一个没有得到重视的知识点, 数据类型 每种语言都有自己的数据类型,下面以javascript为例 类型的分类 js的数据类型可以分为 两大类: 1,值类型 (String,Number,undefined,Boolean,null) 2,引入类型(Object,Function,Array) 个人理解也可以把值类型和引入类型分为简单类型和复杂类…

监控系统几种常见的光端机传输方案拓扑图

近几年随着模拟摄像机被网络摄像机以及高清同轴摄像机取代,在光纤传输层,之前使用量比较大的视频光端机也逐渐被光纤收发器、POE交换机、网络交换机等网络光通信设备取代掉。目前市场上音频、数据、开关量、电话、对讲等信号依然可以通过光端机来进行传输…

在等待Jakarta EE时

自甲骨文在JavaOne 2017宣布将Java™EE转移到Eclipse Foundation以来已有一年多了。此后发生了很多事情: Java™EE 8 API和实现项目已在EE4J下建立 。 Eclipse GlassFish 5.1 版本即将发布 。 全新的Jakarta EE规范流程指日可待。 社区显示出有关Jakarta EE技术…

工业交换机外壳选用时有什么要求?

我们一般在选择工业交换机时,更多的是关注工业交换机的温度范围、EMC电磁兼容性、安装方式和电源等,而对于工业交换机的外壳关注比较少,除了一些客户需要防水要求的。接下来就由飞畅科技的小编来为大家介绍一下工业交换机外壳选用有什么要求?…

工业交换机与光纤收发器的区别

工业交换机与光纤收发器效果有什么差异工业交换机与光纤收发器不同的是,光纤收发器其实是点对点的工业工业交换机,光纤收发器只是一种光电转化设备,仅仅只是用于因传输间隔过远而采取的一种延长传输间隔的一种手法;而工业交换机是…

使用React Native和Spring Boot构建一个移动应用

“我喜欢编写身份验证和授权代码。” 〜从来没有Java开发人员。 厌倦了一次又一次地建立相同的登录屏幕? 尝试使用Okta API进行托管身份验证,授权和多因素身份验证。 React Native是使用React构建移动应用程序的框架。 React允许您使用声明式编程风格来…

交换机的特点及工作原理

交换机有多个端口,每个端口都具有桥接功能,可以连接一个局域网或一台高性能服务器或工作站,实际上,交换机有时被称为多端口网桥。那么,对于交换机的特点以及工作原理这块你是否有了解呢?接下来我们就来为大…

Spark UI的见解

作为延续解剖的-Apache的火花的工作后,我将分享如何利用星火UI调谐工作。 我将继续使用先前文章中使用的相同示例,新的spark应用程序将在以下方面完成工作 –阅读纽约市停车票 –通过“板ID”进行汇总并计算违规日期 –保存结果 此代码的DAG看起来像…

光纤收发器的6个指示灯说明

我们常用的光纤收发器都有6个指示灯,那么每个指示灯都代表什么含义呢?是否所有指示灯都亮起才代表光纤收发器正常工作呢?接下来飞畅科技的小编就来为大家详细说明一下,一起来看看吧! 光纤收发器的指示灯说明&#xff…

如何通过光纤收发器指示灯来判断收发器的故障

我们常用的光纤收发器都有6个LED指示灯,它们显示了收发器的工作状态,根据LED所示,就能判断出收发器是否工作正常和可能有什么问题,从而能帮助找出故障。那么,光纤收发器的每个指示灯都有什么含义呢?是否所有…

单纤光纤收发器a与b怎么放?如何使用光纤收发器的AB端?

光纤收发器的ab端是发射端(a端)和接收端(b端),单纤收发器两端分别是A端与B端,这两端的波长不同,发射端的波长比接收端的波长短,而双纤收发器其实是不分AB端的,因为它两端…

您的API是什么情况?

免责声明:在纯REST中,API是不透明的,URL应该是在对先前请求的响应中作为链接发送的内容。 但是,我不是在讲纯REST,而是在讲更实用的API,其中涉及REST的一些概念以及通用的API最佳实践。 编写API时&#xf…

家用光纤猫设备、光纤收发器和光电交换机介绍

光纤能转换网线吗?光纤是一种光导玻璃纤维,传输的是光信号,是不能直接与网线连接,需要通过光电转换设备,将光信号转换成网络信号,常见的光电转换设备有家用光纤猫设备、光纤收发器和光电交换机。接下来就由…

浅谈模拟光端机和数字光端机的区别?

光纤和光端机应用在监控领域里主要是为了解决两个问题:一是传输距离,一是环境干扰。双绞线和同轴电缆只能解决短距离、小范围内的监控图象传输问题,如果需要传输数公里甚至上百公里距离的图象信号则需要采用光纤传输方式。光端机为监控系统提…

Java io字符流读入英文_Java IO 系列教程(四)-字符输入流(2)

本文介绍字符输入流在前面一节中,我们向一个文件中写入了一些字符,通过图片可以看出总共是6个中文字符和一个换行,总共是20个字节,可以推算出字符编码是utf-8,每个汉子占3三个字节。本文就用字符输入流来读一下。代码部…

AWS上的应用程序自动扩展–选项及其对性能的影响

扩展软件应用程序是至关重要的,以避免由于网站的客户群或需要处理大量数据集的应用程序等增加而导致工作负载增加的性能瓶颈。云服务提供商通常是访问其他应用程序的最佳方法随需应变的资源,可根据应用程序的负载变化来扩大或缩小。 1.什么是可伸缩性&a…

模拟光端机和数字光端机的优缺点介绍

视频光端机在中国的发展是伴随着监控发展开始的,常用的视频监控光端机在技术实现上分为模拟调制的光端机和数字非压缩编码光端机两大类。由于在对外接口上都是标准的基带视频接口,单从外观上是很难区分模拟光端机和数字光端机。那么,模拟光端…

什么是DVI光端机?dvi光端机的优势有哪些?

DVI光端机是由DVI发送器(DVI-T)和DVI接收器(DVI-R)组成,通过一芯单模光纤传输DVI、VGA、Audip、RS232信号。接下来我们就来为大家详细介绍下什么是DVI光端机?感兴趣的朋友就一起来详细了解下吧!…

mysql技术大会2020_2020年数据库技术大会助力技术提升

下半年的技术大会比较多,作为数据库技术从业人员,自然比较关注数据库技术大会,有幸参加过几次数据技术嘉年华,每次参会能遇到很多数据库领域的知名专家,认真聆听技术大咖的主题分享总能获得很多数据库发展动态和技术知…

什么是PCM综合语音复用设备?

PCM语音复用设备,中文称脉码调制,由A.里弗斯于1937年提出的,这一概念为数字通信奠定了基础,60年代它开始应用于市内电话网以扩充容量,使已有音频电缆的大部分芯线的传输容量扩大24~48倍。各国相继把脉码调制…