상위 클래스 보다는 인터페이스를…

AJN의 AgileJava 4th 스터디에서 Head First Java를 가지고 스터디하고 있습니다. 이번주는 7, 8, 9장을 다룰 것 같은데 7장을 열자마자 이상함을 느꼈습니다.

해당 챕터의 주제가 “상속과 다형성” 이다보니 상속을 이야기 하기 위해 여러 예제를 보여주며 설명하고 있는데 대부분의 예제의 상위 클래스가 제가 보기엔 클래스로 정의하기에는 상당히 추상적이라 인터페이스로 선언하는 것이 맞게 보입니다.

Shape 이라는 클래스에 rotate()와 playSound() 메소드가 정의되어 있고 이 클래스를 상속한 Square, Circle, Triangle, Amoeba 클래스가 있습니다.
사용자 삽입 이미지도대체 Shape 클래스에 있는 메소드들은 어떻게 구현을 하는 걸까요? 흠;;

상위 클래스는 아래에서 위로 만들어져야 자연스러운 것 같습니다. 반대로 위에서 아래로 구조가 만들어 질 떄는 인터페이스가 어울립니다.

상속 구조는 하위 클래스들 간에(아직 자신이 하위 클래스인줄 모르는 상태에서) 공통되는 코드가 있을 때 그것을 제거하기 위해서 상위클래스가 만들어져야 합니다. 그래야 상위클래스가 쓸모가 있어집니다. 안그럼 위처럼 멍하니 하는일이 애매한 상위클래스가 만들어집니다.

반대로 인터페이스는 애초에 다른 컴포넌트와의 약속을 위해 미리 정해 놓을 수도 있고 이 인터페이스를 구현하는 클래스에 반드시 있어야할 메소드들을 강제 할 수 있기 때문에 미리 인터페이스를 설계 해두고 클래스들이 구현하도록 할 수 있습니다. 물론 매우 자연스러운 현상이며 나중에 필요로 인해 인터페이스와 클래스들 사이에 추상 클래스가 들어설 수도 있겠습니다. 그때가 되면 아래와 같이 바뀔 것입니다.

사용자 삽입 이미지이러한 구조로 가더라도 결국 다형성은 사용할 수 있게 되며 필요에 따라 Shape 인터페이스를 구현하여 확장할 수도 있으며 AbsractShape을 상속 받아서 구현할 수도 있기 때문에 확장성은 더욱 좋아집니다.

새로운 기능의 추가을 추가 한다고 했을 때에도 새로운 메소드를 가진 인터페이스를 구현하도록 추가만 하면 되는 반면에 상속 구조에서는 상위 클래스를 수정해야 하고, 그렇게 되면 하위 클래스들 중에는 원치 않는데도 상위 클래스의 메소드를 가지게 되는 경우가 발생할 수 도 있습니다.

이래저래 애초부터 상위클래스를 계획하지 말고 처음에는 인터페이스 기반으로 설계를 하고 상위클래스는 필요에 따라 뽑아 내는 것이 그럴싸해 보입니다.

Spring AOP 사용 방법

간추리면 세 가지. 크개는 두 가지

1. 옛날 방법

– Spring AOP API를 사용하는 방법.

2. 2.0 방법

– @AsepctJ를 사용하는 방법
– <aop />를 사용하는 방법

옛날 방법이 훨씬 복잡하지만 그걸 알고 나면 2.0 방법은 누워서 떡먹기 입니다. 여기에 하나 더 추가하자면 AspectJ를 사용하는 방법이 있는데 특별히 필드 Jointpoint나 생성자 Jointpoint 또는 Spring에서 지원하지 않는 AspectJ Pointcut 표현식이 필요한 상황이 아니라면 위의 Spring AOP 만으로도 충분할 것 같습니다.

길거리 여성의 차비를 빌미로 한 사기 조심

여러분들이라면 한국 내 타 도시에서 지값을 잃어버려서 돈도 없고 카드도 없는 상태에서 집에가고 싶다면 어떻게 하시겠습니끼??

어제 있었던 일입니다. 지하철에서 누가 절 치더군요. 돌아봤더니 여자입니다. 저보다 어려보이던데…

여 : 저기요. 서울역 가려면 어떻게 가요?

나 : (뭐야 병X인가. 지하철 노선표를 들고 있으면서 왜 물어봐.) 충무로 가서 갈아타면 되겠네요.

여 : 저 근데 제가 정말 죄송한데요…

나 : (뭐야…)???

여 : 친구네 어쩌구.. 집이 부산인데.. 어쩌구 지갑을 잃어 버려서.. 어쩌구 천원짜리 몇 개라도.

나 : 죄송하지만.. 저도 돈이 하나도 없습니다. 교통카드 밖에 없네요.

제가 생각할 때 이 여성은 자신이 여자라는 점을 백분 활용한 동정심 유발과 남자의 보호본능 자극으로 앵벌이를 하려는 수작입니다., 이와 비슷한 일이 몇 주전에 신촌에서도 있었기 때문에 거의 조직적으로 이런 일을 계획하고 조장하는 것 같습니다. 조심하시기 바랍니다.

저라면 타지에서 땡전 한 푼 없다면 근처 경찰서에 가서 공무원 아무 한테나 돈을 빌리고 나중에 집에가서 입금해 주겠습니다.