Java 如何划分相互有独立方法的类?
我实现了一个包含内置Java不支持的方法的类。然而,过了一段时间,这个班级变得相当大。因为它包含独立的方法,比如Java 如何划分相互有独立方法的类?,java,oop,inheritance,Java,Oop,Inheritance,我实现了一个包含内置Java不支持的方法的类。然而,过了一段时间,这个班级变得相当大。因为它包含独立的方法,比如printMapContainer()和splitMapContainer,所以我认为应该将类划分为两个或更多不同的逻辑子类,并添加一些层次结构。但是,我不知道如何在类下面拆分,因为它们不适合继承之类的问题。我应该如何在逻辑上划分这个具有相互独立的方法的类,以便在不损失代码质量的情况下将更多的方法放到新的层次结构中?(一个类中有30个方法,太尴尬了,不是吗?) 每个方法都有一个以上的辅
printMapContainer()和splitMapContainer
,所以我认为应该将类划分为两个或更多不同的逻辑子类,并添加一些层次结构。但是,我不知道如何在类下面拆分,因为它们不适合继承之类的问题。我应该如何在逻辑上划分这个具有相互独立的方法的类,以便在不损失代码质量的情况下将更多的方法放到新的层次结构中?(一个类中有30个方法,太尴尬了,不是吗?)
每个方法都有一个以上的辅助方法,以便遵守每个方法规则的24行。因此,在一个类中,我有将近20个方法。我只想将层次结构放到这个类中,然后使用,例如;可能像,hashmaphhelper hMH=newbasichashmapmethods()代码> 根据您的描述,您的类的所有方法似乎都是无状态的。在这种情况下,该类应该是一个不可实例化的助手类,其所有方法都声明为static
。继承这个类不是一个好主意,因为它的所有功能都可能有用。如果您发现自己将面向不同集合的方法添加到同一个类中,您可能希望将该类拆分为,例如,HashMapHelper
和MapHelper
,根据需要使用HashMapHelper
的方法
在Java中,包含30多个helper方法的类并不少见。对于具有类似功能的类的示例,请查看该类:该类有50多个方法,所有这些方法都有助于操纵Java集合。继承不应仅为了代码重用而使用。使用组合或委派代替
如果您不能使用继承,那么就不要使用。在使用继承之前,问问自己是否遵循或违反了LSP
Liskov的替换原则(LSP)-“每个派生类都应该可以适当地替换为其基类”
此外,您可能需要执行提取类重构。然后你会有更多的类和一些方法。我建议您只进行五次重构,因为它们非常适合这种情况
- 移动方法
- 移动字段(如果系统有字段)
- 提取类
- 提取超类
- 提取子类
重构就是重构代码,在不改变可观察行为的情况下改变其内部结构。在编写一些代码之前,请牢记坚实的原则。这将帮助您编写更好的代码。听起来所有的方法都是hashmaps的助手方法。那样的话,我就把他们都留在同一个班上。作为旁注,每个方法24行不是一个固定的规则,它只是一个很好的指南。
HashMapHelper
mergeHashMaps.java // merge more than one hash maps into one
printHashMap.java // print key,value pair in desired format to console
formHashMap.java // form existing hash map into new format
splitHashMap.java // split hash map into more same size chunks
isEqual.java // is two hash map contain same pair
removeALL.java // remove all key from hash map
updateKeyALL.java // update hash map with new key set