#java #subclass #reorganize
#java #подкласс #реорганизовать
Вопрос:
Класс в конечном итоге предоставляет все свои методы и поля на одном уровне и становится крайне неорганизованным.
Было бы лучше организовать его в специализированных подклассах. Ниже приведен пример беспорядочного класса.
public class MyClass
{
//[Properties]
public String value1;
public String value2;
//[Methods used by outside world]
public void job1()
{
job1_task1();
job1_task2();
utilInternal1();
utilExternal1();
}
public void job2()
{
job2_task1();
utilInternal1();
utilExternal1();
}
//[Methods used locally and always specific to a job method]
private static void job1_task1() ...
private static void job1_task2() ...
private static void job2_task1() ...
//[Methods used locally and general to jobs methods]
private static void utilInternal1() ...
//[Methods that could be added to an external class util]
public static void utilExternal1() ...
}
До сих пор я организовывал свой код в специализированных классах, таких как Props, Jobs, Tasks, Utils.Внутренние, утилиты.Внешние.
-
Класс экземпляра, такой как задания и реквизиты. Отображаются через два поля экземпляра. Они будут использовать непосредственно переменную экземпляра.
-
Статический класс можно использовать напрямую, например, как задачи и утилиты. Они НЕ будут использовать непосредственно переменную экземпляра.
public class MyClass
{
public Prop Props = new Prop();
public Job Jobs = new Job();
//[Properties]
private class Prop
{
public String value1;
public String value2;
}
//[Methods used by outside world]
public class Job
{
public void job1()
{
Tasks.Job1.task1();
Tasks.Job1.task2();
Utils.internal.util1();
Utils.external.util1();
}
public void job2()
{
Tasks.Job2.task1();
Utils.internal.util1();
Utils.external.util1();
}
}
//[Tasks for Jobs]
private static class Tasks
{
//[Tasks for job1]
private static class ForJob1
{
private static void task1() ...
private static void task2() ...
}
//[Tasks for job2]
private static class ForJob2
{
private static void task1() ...
}
}
private static class Utils
{
//[methods util used locally]
private static class Internal
{
private static void util1() ...
}
//[methods util generic that could be added to an external class Util]
private static class External
{
public static void util1() ...
}
}
}
Я сделал статическим большую часть подкласса, содержащего методы, которые не должны использовать напрямую переменную класса, вместо этого они будут запрашивать их в качестве параметров.
Задачи бесполезны для внешнего класса и имеют значение только локально в нашем классе.
private static Task
{
private static ForJob1
{
private static String task1(String value)
{
String result = value ".";
return resu<
}
}
}
Является ли это чем-то приемлемым?
Меня также беспокоит использование памяти?
Комментарии:
1. Меня также беспокоит использование памяти? — почему?
2. Является ли это чем-то приемлемым? Делает код более трудным для чтения, я бы сказал «нет» на этом основании.
3.Я бы рекомендовал изучить принципы SOLID. scotch.io/bar-talk/… stackify.com/solid-design-principles
4. @ScaryWombat увеличивает ли это размер объекта в памяти, если у вас есть класс, содержащий несколько подклассов?
5. @DCTID спасибо за ссылку, я собираюсь ее прочитать. Вы видите что-то неправильное в этом. Я имею в виду, что организация фрагмента кода в методах уже помогает организовать класс, и это рекомендуется. Теперь организация методов в подклассе — это то, что хорошо, или это действительно имеет риски? возможно, проблемы с памятью? Другие ?. если это так, пожалуйста, подробно изложите свой ответ. Спасибо.