Java 如何知道何时需要添加单独的类?

Java 如何知道何时需要添加单独的类?,java,class,generalization,Java,Class,Generalization,这是一个相当基本的一般性问题,但很简单。我知道您创建一个类来创建对象,但我想知道这是否是您需要创建单独类的唯一原因?我问这个问题的原因是因为在我正在学习的一门课程中,所有的学生都介绍了一个项目的设计,我们每个人都必须单独构建这个项目。很多学生有5-10节课,而我只有2节课。这两种选择似乎都很有效 如果这是一个主观问题,那么什么是最被接受的编写程序的方法。行业领袖如何看待添加可能并非100%必要的额外类 以下是一些指导原则: 单一责任原则 单一责任原则基本上是说每个班级只应该做一件事。如果有一个类

这是一个相当基本的一般性问题,但很简单。我知道您创建一个类来创建对象,但我想知道这是否是您需要创建单独类的唯一原因?我问这个问题的原因是因为在我正在学习的一门课程中,所有的学生都介绍了一个项目的设计,我们每个人都必须单独构建这个项目。很多学生有5-10节课,而我只有2节课。这两种选择似乎都很有效


如果这是一个主观问题,那么什么是最被接受的编写程序的方法。行业领袖如何看待添加可能并非100%必要的额外类

以下是一些指导原则:

单一责任原则
单一责任原则基本上是说每个班级只应该做一件事。如果有一个类处理两个或更多的事情,则将其拆分为多个类

现在检查一下你的类,有没有什么类可以做很多事情,比如获取用户输入、计算和打印结果?如果是这种情况,您可能希望将其拆分为多个类

抽象 OOP中的抽象非常重要。它基本上是将现实世界中的事物转换成类或接口的过程。例如,如果你在做一个计算应用程序,你会有一个
Calculator
类来进行实际的计算。您还有一个管理计算器窗口的
CalculatorWindow
类,比如监听按钮事件。然后,此类可以将用户输入提供给
计算器
对象,并让它计算结果

设计模式
有很多设计模式。通过查看这些设计模式,您可以了解类是如何交互的,希望您能够了解何时创建新类。

以下是一些指导原则:

单一责任原则
单一责任原则基本上是说每个班级只应该做一件事。如果有一个类处理两个或更多的事情,则将其拆分为多个类

现在检查一下你的类,有没有什么类可以做很多事情,比如获取用户输入、计算和打印结果?如果是这种情况,您可能希望将其拆分为多个类

抽象 OOP中的抽象非常重要。它基本上是将现实世界中的事物转换成类或接口的过程。例如,如果你在做一个计算应用程序,你会有一个
Calculator
类来进行实际的计算。您还有一个管理计算器窗口的
CalculatorWindow
类,比如监听按钮事件。然后,此类可以将用户输入提供给
计算器
对象,并让它计算结果

设计模式
有很多设计模式。通过查看这些设计模式,您可以了解类是如何交互的,并且希望您能够了解何时创建新类。

对于这一点,没有一个万能的答案


如果这是一个主观问题,那么什么是最被接受的编写程序的方法

显然,这个问题也是主观的。(你不希望我们为你做调查吧?)

行业领袖如何看待添加可能并非100%必要的额外类

你是说比尔·盖茨,拉里·埃里森

他们可能什么也没说

当然,有些人会站在他们的肥皂盒上,非常权威地告诉你xyz是“最佳实践”之类的东西。但大多数时候,这些声明都是基于(充其量)轶事证据/个人经验。换句话说,它们实际上是伪装成事实的观点


一句话:没有单一的正确答案,所以你会学到:

  • 什么最适合你(和你的团队),以及
  • 真的不值得为它担心太多。。。前提是你所做的“对你有用”

(不能“工作”的两个极端情况是,类的粒度太细,以至于您花费所有的时间编写和阅读样板文件,或者类太大太复杂,以至于您无法再理解它们。)

对于这一点,没有一刀切的答案


如果这是一个主观问题,那么什么是最被接受的编写程序的方法

显然,这个问题也是主观的。(你不希望我们为你做调查吧?)

行业领袖如何看待添加可能并非100%必要的额外类

你是说比尔·盖茨,拉里·埃里森

他们可能什么也没说

当然,有些人会站在他们的肥皂盒上,非常权威地告诉你xyz是“最佳实践”之类的东西。但大多数时候,这些声明都是基于(充其量)轶事证据/个人经验。换句话说,它们实际上是伪装成事实的观点


一句话:没有单一的正确答案,所以你会学到:

  • 什么最适合你(和你的团队),以及
  • 真的不值得为它担心太多。。。前提是你所做的“对你有用”

(不能“工作”的两个极端情况是,类的粒度太细,以至于您花费所有时间编写和阅读样板文件,或者类太大太复杂以至于您无法理解它们。)

不同的类用于执行不同的任务。这减少了代码重复增加了代码重用。这有助于您遵循设计模式轻松解决一些关键问题。这是很好的做法

下面是一个简单的例子

对数据进行排序

//Without using multiple class
public class A{
  public static void main(String[] args){
     int array[] = {1,6,1,8,34,5};
     for(int i=0; i< array.length; i++){
        //your procedure to sort the array
     }
     //other operations;
     //Now you need to sort another new array (new_array[])
     int new_array[] = {1,6,1,8,34,5};
     for(int i=0; i< new_array.length; i++){
        //your procedure to sort the new_array
     }
  }
}
//不使用多个类
公共A类{
公共图书馆
public class A{
  public static void main(String[] args){
     int array[] = {1,6,1,8,34,5};
     
     int my_array[] = Opertaion.sortArray(array);     

     //other operations;
     //Now you need to sort another new array (new_array[])
     
     int new_array[] = {1,6,1,8,34,5};
     int my_new_array[] = Opertaion.sortArray(new_array); 
  }
}

public class Opertaion{
   public static int[] sortArray(int[] array){
     for(int i=0; i< array.length; i++){
        //your procedure to sort the array
     }
     return array;
   }
}