功能磁铁

天哪,我讨厌Java中的enum(嗯,我不知道,但是引起您的注意不是!!)

这是一系列简单的事件,得出一个奇怪的结论:

  • 我们有一个可以根据配置进行处理的组件
  • 我们决定将它可以执行的不同操作放入一个enum以便我们控制有效值
  • 从相关因素的代码enum的算法来处理每个操作进入到同一库作为enum (或并行库,它并不重要)
  • 系统的更多角落使用基于配置的处理,因为它很好
  • 因此,我们向enum添加了更多操作
  • 而且图书馆越来越大
  • 并包含整个系统使用的特定功能
  • 他们彼此之间没有特别的关系

不知何故,这里的开发过程违反了开放-封闭原则。

功能磁铁

我们发现自己面临的问题是,流行的机制必须积累每个人的特征才能完成工作。 这是因为它的构建方式意味着每次需要扩展时都需要进行修改。

在Java之类的语言中, enum是约束一组值的必经之地,很容易陷入上述陷阱。 您将如何确保所有可能的操作名称都是唯一的,并且只能解析有效的操作? 但是,如果完全集中化此机制,最终将吸引无关的关注。

简短的答案是, enum用于一组封闭的值。 对于更开放,可扩展的机制,您还需要其他一些东西。 扩展核心技术时,应通过组合而不是修改来进行扩展。

其他磁性能

通常,是由于设计不良或流行(或两者兼而有之),导致域从中央问题空间之外获取收益。

如果开发团队在构建某些东西方面做得特别出色,那么用户通常会要求将更多功能集成到系统中。 这可以导致厨房抽屉应用程序,其中充满了很多无关的东西,这很有用。

这样的磁体比它们的维护和重组更容易构造。

小心被吸引到的东西!

翻译自: https://www.javacodegeeks.com/2020/03/the-feature-magnet.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值