Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何划分相互有独立方法的类?_Java_Oop_Inheritance - Fatal编程技术网

Java 如何划分相互有独立方法的类?

Java 如何划分相互有独立方法的类?,java,oop,inheritance,Java,Oop,Inheritance,我实现了一个包含内置Java不支持的方法的类。然而,过了一段时间,这个班级变得相当大。因为它包含独立的方法,比如printMapContainer()和splitMapContainer,所以我认为应该将类划分为两个或更多不同的逻辑子类,并添加一些层次结构。但是,我不知道如何在类下面拆分,因为它们不适合继承之类的问题。我应该如何在逻辑上划分这个具有相互独立的方法的类,以便在不损失代码质量的情况下将更多的方法放到新的层次结构中?(一个类中有30个方法,太尴尬了,不是吗?) 每个方法都有一个以上的辅

我实现了一个包含内置Java不支持的方法的类。然而,过了一段时间,这个班级变得相当大。因为它包含独立的方法,比如
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