다른 객체의 메서드 호출!! 어떻게 해야 좋은 방법인가요?
정훈
그림설명==================================
AAA클래스 각 BBB,DDD클래스의 객체를 갖고 있습니다.
그 BBB클래스의 객체는 CCC객체를 갖고 있습니다.
그리고 DDD클래스의 객체는 EEE클래스의 객체를 갖고 있습니다
============================================
여기에서 문제.. CCC의 객체에 disp()메서드가 있죠? 이 disp()메서드에서
EEE클래스의 객체가 가진 func()메서드를 호출하려고 합니다.
제가 사용하고 있는 방법은 CCC의 객체가 AAA의 주소값을 갖고 있어서
AAA의 메서드를 호출하고 그 메서드가 또다시 DDD의 메서드를 호출하고
호출된 DDD의 메서드는 EEE의 메서드를 또다시 호출하는 방식을 사용하고 있습니다.
이 방법을 사용한 결과 쓸데없는 메서드가 너무 들어가게 되는 것 같아서요..
아래 예제 소스를 예를 들면 AAA클래스의 callFunc()와 DDD클래스의 callFunc()가
별 하는 일없이 들어가잖아요.. 제 생각에는 좀 효율적이지 못한 것 같은데요
이런 문제를 해결할 효율적인 방법이 없을까요? 고수님들 꼭 좀 도와주세요..
글이 길어서 죄송.. 아래는 예제 소스코드입니다.
=====본인이 사용하는 방법======
[AAA 클래스 ]
private BBB bbb = new BBB(this);
privateDDD ddd = new DDD(this);
public void callFunc(){
ddd.callFunc();
}
~~~~~~~~~~~~~~~~~~~~~~~~
[BBB클래스]
private AAA aaa;
private CCC ccc;
public BBB(AAA aaa){
this.aaa = aaa;
ccc = = new CCC(aaa)
}
~~~~~~~~~~~~~~~~~~~~~~~~
[CCC클래스]
private AAA aaa;
public CCC(AAA aaa){
this.aaa= aaa;
}
public disp(){
aaa.callFunc();
}
~~~~~~~~~~~~~~~~~~~~~~~~~[DDD클래스]
private AAA aaa;
private EEE eee;
public DDD(AAA aaa){
this.aaa = aaa;
eee = new EEE(aaa);
}
public callFunc(){
eee.disp();
}
~~~~~~~~~~~~~~~~~~~~~~~~~
[EEE클래스]
public void func(){
System.out.println(호출이 잘 되었다);
}
-
딥체리
설계의 중요성을 새삼 느낍니다 T^T
-
연다홍
설계를 다 하시고 찾는 방법으로는 어쩔수 없지 않을까요?
설계를 다시 하여서 그렇게 복잡하지 않게 하는 방법을 찾는게 좋을듯 합니다. -
앵겨쪼
글쎄요.. 특별한 방법이 없어 보입니다.
우선 동작하도록 만들어 놓고.. 그 다음에 더 커지면 다시 바꾸어야 하지 않을까요?
클래스들의 정의를 명확하게 하고 나야. 분리가 될지 안될지,
묶을지. 누가 뭘 가지고 있을지를 알 수 있을텐데.. 전 잘 몰겠네요 ^_^