Я ищу концепт для пересылки объекта подобъектам.
Пример:
Я хотел бы создать файлы журналов для нескольких основных объектов, которые включают подобъекты (представьте себе сервер REST, который бы регистрировал каждое отдельное соединение по идентификатору).
Создать один большой лог-файл просто (перенаправить System.out.println, я это уже инкапсулировал)
Пример кода:
class SubElementA{
public SubElementA(){
Debugger.debug("I am called, too");
}
}
Application.java
package com.dev4ag;
class Application{
private ElementA elA;
private String prefix;
public Application(String name){
this.elA = new ElementA();
this.prefix = name;
}
public void countUp(){
Debugger.debug(this.prefix+": I will now count up");
this.elA.doSomeStuff();
}
}
ElementA.java
package com.dev4ag;
class ElementA{
private int counter;
private SubElementA subElementA;
public void doSomeStuff(){
counter++;
Debugger.debug("Counter is: "+counter);
}
//Constructor
public ElementA(){
subElementA = new SubElementA();
this.counter = 0;
};
}
SubElementA.java
package com.dev4ag;
class SubElementA{
public SubElementA(){
Debugger.debug("I am called, too");
}
}
Debugger.java
package com.dev4ag;
public class Debugger {
public static void debug(String output){
//Just imagine we would write to a file here ;)
System.out.println(output);
}
}
(было проще написать system.out.println, чем создать файл, просто представьте, что Debugger.debug будет писать в файл).
Теперь я думаю о решении создать одну цель вывода отладки для каждого приложения. Я определенно могу изменить отладку, чтобы она не была статичной, и создать объект отладки в приложении.
Но есть ли способ использовать этот объект в подклассах, не перенаправляя объект отладки ни через конструктор, ни через функцию сеттера, что будет означать необходимость добавления объекта для отладчика в каждый класс?
Что было бы самым красивым решением для этого?