다음과 같은 코드가 있다고 하자
클래스 A는 B를 이용하여(has a상속) 강한 결합 관계가 있다.
이때 클래스A에서 클래스B대신에 클래스C로 수정하고자 한다면 소스코드를 수정해야 하는 상황이 온다.
이 같은 상황을 만들지 않기 위해서 인터페이스를 이용한다.
우선 인터페이스 x를 정의하고
클래스 B는 인터페이스x를 상속하여 구현한다.
클래스 C도 인터페이스x를 상속하여 구현한다.
그리고 클래스A에는 인터페이스 x와 이를 설정하는 set을 만들어서 결합하는 도구를 만든다.
마지막으로 main함수에서 set을 이용하여 b에서 c로 원하는 것으로 바꿀 수 있다.
이는 클래스A의 소스코드를 수정하지 않고 main함수에서 바꾸게 된 것이다.
여기서 더 나아가서 main함수에서도 소스코드를 수정하고 싶지 않다면 따로 설정파일을 만드는 방법이 있다.
다음과 같이 setting.txt를 만들어서 수정할 클래스의 정보를 적는다.(C라면 B대신 C로 수정한다.)
main함수에서는 해당 setting.txt의 내용을 불러오고 이를 해당 객체를 생성하도록 코드를 짠다.
이를 통해 변경사항의 권한(?)을 setting.txt에 넘김으로써 main함수에서도 소스코드 변경없이 수정할 수 있다.
'컴퓨터 > JAVA' 카테고리의 다른 글
객체지향 - SOLID(객체 지향 설계) (0) | 2024.10.05 |
---|---|
JAVA - Generic(제너릭) (0) | 2024.09.30 |
OOP - 객체지향프로그래밍 기초 - 다형성(Polymorphism) (0) | 2023.04.24 |
OOP - 객체지향프로그래밍 기초 - 추상화(Abstration) (0) | 2023.04.24 |
OOP - 객체지향프로그래밍 기초 - 상속(Inheritance) (0) | 2023.04.24 |