의존 대상 객체를 직접 생성했을 때 문제에 대해 질문드립니다.
안녕하세요. 강사님.
영상 4:40초쯤 생성 클래스가 바뀌면 의존하는 코드도 바뀐다고 하셨는데 이게 어떤 경우인지 예시가 잘 안 그려집니다.
추상화 파트를 다시 봐도 이해가 잘 안 가서 그러는데 예시나 추상화 강의에서 나왔던 부분 좀 언급하셨던 곳 좀 알려주실 수 있을까요?
답변 2
0
감사합니다.
그런데 의존하는 대상이 바뀌어도 기존 코드에 영향이 없으려면 추상클래스를 의존하고 있어야 의미가 있을 것 같은데 맞을까요?
아래의 코드처럼 MessageSender라는 추상클래스에 의존하도록 하고 생성자나 메소드로 SmsSender나 AlimtalkSender를 인자를 받도록 해야 의존하는 대상이 변경되어도 코드 수정이 없을 것 같아서요.
처음 예시에서 SomeService가 SmsSender를 가지고 있고 의존 주입으로 생성자나 메소드로 SmsSender를 초기화한다 하면 요구사항이 변경되어 AlimtalkSender로 변경됬을 때 결국 코드가 수정되어야 하니까요..
제가 이해하고 있는게 맞나요?
class SomeService {
//private AlimtalkSender sender = new AlimtalkSender(); // <-- 코드 바뀜
private:
MessageSender *sender;
public:
void setMessageSender(MessageSender *sender) {
this->sender = sender;
}
void doSome() {
... // DB 연동 등 작업
sender.send(to, msg);
}
}
0
안녕하세요. 아래 코드를 보죠.
public class SomeService {
private SmsSender sender = new SmsSender();
public void doSome() {
... // DB 연동 등 작업
sender.send(to, msg);
}
}이 코드에서 SomeService는 SmsSender를 new로 생성해서 사용하고 있습니다. 즉 SomeService가 SmsSender를 의존하고 있죠.
SMS가 아니라 알림톡으로 메시지를 보내라고 요구사항이 변경되고 알림톡 발송 기능은 AlimtalkSender에 구현되어 있다고 가정하면, SmsSender 대신에 AlimtalkSender를 사용하도록 기존 코드를 변경해야 할 겁니다.
public class SomeService {
private AlimtalkSender sender = new AlimtalkSender(); // <-- 코드 바뀜
public void doSome() {
... // DB 연동 등 작업
sender.send(to, msg);
}
}즉 위 코드처럼 SmsSender를 new로 생성해서 사용(의존)하는 SomeService 코드가 AlimtalkSender를 생성하도록 바뀌는 거죠.
진짜화면이랑달라서못해먹겟어요먹겟어요
0
13
1
[영한님]Spring Boot 및 프로젝트 생성
0
45
2
Shape 클래스 실습 코드 피드백 요청드립니다
0
40
2
퀴즈가 안열려요
0
71
2
run() 메서드 안에 지역변수 sum을 사용한 이유
0
79
1
강의 화면이 안나와요
0
69
1
중급 과정 학습 중 복습과 진도 진행의 우선순위에 대해 질문드립니다
0
77
1
빠져나오기 위해서 System.in을 닫는다는게 무슨 의민가요??
0
57
1
문제2번
0
63
1
중복 코드와 유지보수성 사이에서 어떤 기준으로 리팩토링해야 할지 궁금합니다
0
48
1
static 변수를 호출할때 인스턴스변수 호출하듯이 호출해도 되나요?
0
71
1
회원 도메인 인터페이스 개발
0
59
1
코드 버그
0
46
1
강의자료
0
52
1
강의 영상 업로드 질문
0
62
2
빈 스코프 개념의 중요성
0
62
1
인텔리제이 설정 최신화 관련 확인 부탁 드립니다!
3
158
2
동일성 동등성
0
52
1
47번 리턴 관련 질문
0
61
1
강의 수준 질문드려요
0
456
1
6분 26초에 말하는 객체의 안에 있는 프로시저란 객체의 메서드를 말하는건가요?
0
418
1
객체의 기능보다 속성을 먼저 추출하는 것에 대해 의견을 여쭤보고 싶습니다.
0
453
1
책임 분리 및 할당 관련 질문이 있습니다.
0
532
2
객체지향 프로그래밍과 캡슐화의 차이가 궁금합니다.
0
697
1





