反模式设计

我最近遇到了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

反模式设计

反模式设计_设计模式:模式或反模式,这就是问题相关推荐

  1. 创建型模式、结构型模式和行为型模式_设计模式之创建型模式

    设计模式GOF23(Group of Four) 设计模式可分为三种类型: 创建型模式:单例模式,工厂模式,抽象工厂模式,建造者模式,原型模式. 结构型模式:适配器模式,桥接模式,装饰模式,组合模式, ...

  2. java 工厂模式的写法_设计模式-Java-简单工厂模式--BitmapFactory

    上一篇,我们说了下MonkeyLei:设计模式-Java-观察者模式-RxJava 其中还利用到了反射的知识,另外也附上了很多我觉得分析还可以的链接. 这里我们看看简单工厂这块.除了这个还有其他几个: ...

  3. 组合模式_设计模式结构性:组合模式(CompositePattern)

    组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象.组合模式依据树形结构来组合对象,用来表示部分以及整体层次.这种类型的设计模式属于结构型模式, ...

  4. 抽象工厂模式_设计模式系列—抽象工厂模式

    前言 23种设计模式速记 单例(singleton)模式 工厂方法(factory method)模式 23种设计模式快速记忆的请看上面第一篇,前面说完了工厂方法模式,我们发现工厂方法模式存在一个严重 ...

  5. 商业模式新生代_商业模式设计方法视觉化思考——《商业模式新生代》笔记之九...

    前言:慢慢来,比较快."财不入急门","您赚不到认知之外的钱"点击头像关注我,和您一起每天学习一点商业思维,提升自己的商业认知.我始终相信,方向对了,认知到了, ...

  6. java状态机设计模式_设计模式总结-State模式

    不同的状态,不同的行为;或者说,每个状态有着相应的行为. 二.State模式的适用场合: State模式在实际使用中比较多,适合"状态的切换".因为我们经常会使用If elseif ...

  7. mysql工厂模式_设计模式-三种工厂模式实例

    1.简单工厂模式:代替new产生对象,产品的类型比较少时. 我们要获得三种不同的数据库对象,如Mysql,SQLserver,Oracle,它们拥有共同的特征,即可以进行抽象,简单工厂目的是将获得具体 ...

  8. php注册树模式,php基础设计模式大全(注册树模式、工厂模式、单列模式)

    废话不多说了,先给大家介绍注册树模式然后介绍工厂模式最后给大家介绍单列模式,本文写的很详细,一起来学习吧. php注册树模式 什么是注册树模式? 注册树模式当然也叫注册模式,注册器模式.之所以我在这里 ...

  9. 【Head First 模式设计】第1章 策略模式

    Intro to Design Patterns Welcome to Design Patterns SimUDuck应用程序 一个模拟鸭子游戏:SimUDuck.游戏中会出现各种鸭子,一边游泳,一 ...

最新文章

  1. 活动推荐|20位大咖齐聚,“中国首届沉浸产业发展论坛”10月底将于南京召开...
  2. script的加载方式与执行
  3. Failed to install DroidIPCam.apk on device 'emulator-5554': timeout
  4. PHP生成随机密码的4种方法及性能对比
  5. CMake,win10,64位,简单配置测试
  6. 大数据技术全解之三分虚拟化技术、七分分布式管理、十二分大数据
  7. AspNet WebApi OData 学习
  8. 从CVPR2019看计算机视觉的最新趋势
  9. 微信小程序 ui框架使用
  10. 手机浏览器一键跳转微信加好友的方法
  11. windows11的ps界面字体显示过小
  12. 02_函数定义及使用函数
  13. cad转excel插件c2e_cad表格转换器2016
  14. 16种床上动作的内涵图,你都看懂了吗?
  15. wifidog 整体分析
  16. C#控制键盘按键的常用方法
  17. 男人到中年,活得不如一条狗
  18. SpringApplicationRunListener
  19. 利用github和godaddy搭建使用二级域名的个人主页
  20. a55计算机主板,A55架构简介与A55主板赏析

热门文章

  1. 线段树动态开点区间加区间求和
  2. Java进阶学习路线
  3. JavaFX UI控件教程(十五)之Combo Box
  4. Maven精选系列--三种仓库详解
  5. 阿里巴巴对Java编程【命名风格】的规约
  6. python打包exe文件
  7. 端午前夕的班级小游戏
  8. 程序员常用网站收藏[定期更新]——csdn博客
  9. php 常用的日期函数,常用php日期函数总结
  10. 第13步 用户模块前端(Admin)