十大高端网站建设,想做企业网站,北京海淀区房价,三水网站建设首选公司10月#xff0c;我写了一个博客#xff0c;题为“上帝对象中的顶级特朗普”#xff0c;其中谈到了用167种不同的方法发现的对象的发现#xff0c;这些方法将该对象与应用程序的所有其他部分链接在一起#xff0c;并且正如您所期望的那样#xff0c;上帝或怪物物的一般标准… 10月我写了一个博客题为“上帝对象中的顶级特朗普”其中谈到了用167种不同的方法发现的对象的发现这些方法将该对象与应用程序的所有其他部分链接在一起并且正如您所期望的那样上帝或怪物物的一般标准。 最近向我指出仅方法计数并不表示一个对象是上帝对象 这是真的。 该注释还继续将String类定位为一个对象该对象不是God Object但具有大量方法。 这让我开始思考就面向对象设计的一般规则而言String类是设计良好的类吗 实际上它是否违反了单一责任原则或demeter的法律并且是否与应用程序的所有其他部分紧密耦合 它是上帝的对象吗 回答此问题的简单方法是根据“单一职责原则”查看字符串 而做到这一点的最佳方法是计算其拥有的方法调用的数量并弄清楚它们的作用。 如果这样做您会发现Java的String类中有66个方法调用并且您可能会得出这样高的数字可能是God Object的第一个迹象。 接下来如果您查看这66个方法调用则可以将它们分为几个不同的责任领域。 例如有 转换方式 getBytes... getChars... 的价值... toUpperCase... toLowerCase... toCharArray... 分割String的方法 子串... 分裂... subSequence... 等效方法 等于... 火柴... 相比于... 搜索方式 指数.. lastIndexOf... charAt... 包含... 组合方法 附加... concat.. ……还有更多。 使用上面的列表您现在可以为类似于以下内容的String编写CRC卡“ String负责将其自身与其他String组合以创建新的String 并将其自身转换为其他对象或对象数组并进行拆分本身分成不同的部分并将其与其他String对象进行比较并对其进行搜索” 坚持法律原则上面的列表显示String的方法调用至少分为五个责任领域这意味着从书上讲违反了单一责任原则。 得出合理的结论那么您可以重构String使其看起来像这样……。 但是这就是问题为什么Java的String类不是由一些数据和一堆在其上操作的类组成的 答案既是见解又是多方面的。 首先历史……随着时间的流逝Java以及String类的发展也是如此。 随着Java版本号的不断提高这些方法也被逐行添加。 第二实用主义。 当前设计中的String对象可能会违反“单一职责规则”但这并不重要将其保留原样并继续编写重要的程序会更容易。 最后我认为这很重要我们通常都知道String是什么。 它的名称和含义是常用的。 如果我们必须定义String负责使用CRC卡的方式那么我们将编写如下内容“ String负责成为s String ”。 字符串可能有66种方法但我相信按照一般共识它不是上帝的对象。 但是软件只是一种意见问题因此我将让您回答我在本博客开头提出的其他问题并让您下定决心…… 参考 Java的String类是上帝对象吗 来自我们的JCG合作伙伴 调试队长博客的 Roger Hughes。 翻译自: https://www.javacodegeeks.com/2012/02/is-javas-string-class-god-object.html