1. 인자로 전달된 객체 (Method Parameter Objects)
메소드에 전달된 객체를 사용하는 경우입니다.
public class Printer {
public void printDocument(Document document) {
// 인자로 전달된 'document' 객체의 메소드를 호출
document.print();
}
}
public class Document {
public void print() {
// 문서 인쇄 로직
}
}
여기서 printDocument 메소드는 Document 객체를 인자로 받아 그 객체의 print 메소드를 호출합니다.
2. 로컬로 생성한 객체 (Locally Created Objects)
메소드 내에서 생성된 객체를 사용하는 경우입니다.
java
Copy code
public class Calculator {
public int calculateSum(int a, int b) {
// 로컬 객체 'Adder' 생성
Adder adder = new Adder();
return adder.add(a, b);
}
}
public class Adder {
public int add(int num1, int num2) {
// 두 숫자의 합 계산 로직
return num1 + num2;
}
}
calculateSum 메소드는 Adder 클래스의 인스턴스를 내부에서 생성하고, 이 객체의 add 메소드를 호출합니다.
3. 필드로 선언된 객체 (Field Objects)
객체가 직접 소유하고 있는 필드의 객체를 사용하는 경우입니다.
public class Car {
private Engine engine; // 필드로 선언된 객체
public Car() {
this.engine = new Engine();
}
public void start() {
// 필드 객체 'engine'의 메소드를 호출
engine.start();
}
}
public class Engine {
public void start() {
// 엔진 시작 로직
}
}
Car 클래스는 Engine 객체를 필드로 가지고 있으며, start 메소드에서 이 엔진 객체의 start 메소드를 호출합니다.
4. 전역 객체 (Global Objects)
시스템 전역에서 사용 가능한 객체를 사용하는 경우입니다.
public class Logger {
public static void log(String message) {
// 로깅 로직
}
}
public class Application {
public void performAction() {
// 전역 객체 'Logger'의 메소드를 호출
Logger.log("Action performed");
}
}
Logger 클래스의 log 메소드는 전역적으로 접근 가능하며, Application 클래스는 이 메소드를 호출하여 로깅을 수행합니다.
이러한 예시들은 각각의 경우에 대한 기본적인 예시로, 실제 응용 프로그램에서는 이러한 원칙들이 복잡한 상호작용을 하는 다양한 방식으로 적용될 수 있습니다
o.getX().getY().getZ().doSomeing()과 같이 이전 메소드 호출의 결과로 어든 객체와 메소드를 호출하면 안된다.
'메모장' 카테고리의 다른 글
IoC- 제어의 역전 (0) | 2023.12.06 |
---|---|
예외 래핑 예시 (0) | 2023.12.05 |
tell don't ask 예시 (0) | 2023.12.05 |
의존 역전 원칙 (0) | 2023.12.05 |
RequestPart, RequestBody 같이 못씀 (0) | 2023.12.04 |