간만에 7 장에서

"DI는 특별한 이유가 없는한 항상 인터페이스를 사용한다고 기억해두자. 굳이 인터페이스를 써야 하냐고 주장하는 사람을 만났는데 논리적으로 설득할 자신이 없거든 DI는 원래 인터페이스를 쓰게 돼 있다고 우겨도 좋다. 분명한 이유가 있어서 인터페이스를 사용하지 않는 경우가 없지는 않겠지만, 단지 인터페이스를 추가하는 것이 귀찮아서 약간의 게으름을 부리고자 인터페이스를 생략한다면 이후의 개발, 디버깅, 테스트, 기능의 추가, 변화 등에서 훨씬 큰 부담을 안게 될 것이다."

꽤 오래 전에 http://toby.epril.com/?p=285 이 글을 썼을 때 나는 로드 존슨의 J2EE 책에서 설명한 인터페이스를 사용해야 하는 이유 3가지를 기준으로 DI에서 인터페이스 사용의 필요성에 대해서 생각해봤다. 그때 결론은 쓰면 좋고, 안써도 문제되지 않는 경우도 충분히 있지않겠나 였다.

하지만 지금은 생각이 완전히 바꼈다. 교조적이라고 해도 좋으니 DI에는 특별한 이유가 없는 한 인터페이스를 써야 한다고 주장하고 싶다. 적어도 로드 존슨은 인터페이스 사용의 중요한 한가지를 빼먹었다. 바로 ISP이다. 인터페이스를 사용해서 얻을 수 있는 혜택은 단지 다형성의 활용 예인 구현 바꿔치기, 테스트 대역 만들기, 다이나믹 프록시 만이 아니다. 이 세가지는 사실 다 같은 얘기다.

나는 그보다 더 중요한 것이 클라이언트가 의존 오브젝트를 바라보는 관심의 창으로서 인터페이스의 가치를 지키기 위해서 오브젝트의 의존 관계는 아주 밀접한 관계가 아니라면 인터페이스를 거쳐야 한다고 본다. 그래야 ISP도 적용할 수 있는 것이고. 자바는 다중 상속을 허용하지 않고 동적 타이핑도 지원하지 않으니 인터페이스만이 하나의 오브젝트를 여러가지 모습으로 클라이언트에게 노출시켜줄 수 있는 유일한 길이다. 설령 클라이언트가 하나더라도 클라이언트가 봐야할 오브젝트의 모습을 만들어줄 수 있다.

DAO의 public 메소드인 setDataSource()는 서비스 오브젝트에게 노출될 이유도 없고, 그래서도 안된다. 그것때문 만이라도 DAO인터페이스를 DI에 사용할 충분한 이유가 된다. DAO가 또 다른 이름으로 다른 서비스에게 (예를 들면 UserDaoImpl이 보안 모듈이 필요로 하는 UserDetailProvider가 되는 것) 자신의 모습을 보이려면 인터페이스는 필수이며, 당연히 인터페이스를 타고 DI가 일어나야 한다. (이쯤에서 필드레벨 @Autowired가 어쩌고 하고 나오면 백오십마디는 더 해야 할 것 같아서 무조건 무시)

생각이 또 바뀔지 모르겠지만, 아무튼 지금은 그렇다는 것. 그리고 ISP는 참 무시못할 원칙이라는 것.

사실 이런 생각은 스프링 코드를 읽으면서 바뀐 것이다. 왜 private 스태틱 클래스로 만든, 그래서 밖에서는 보이지조차 않는, 재활용 가능성 조차 없는 자기 전용 멤버 클래스를 인터페이스를 통해서 접근했는지… 그 의문에 대한 내 나름대로의 답이다.

Related posts:

  1. 유쾌한 이슈처리 재촉 메일

Facebook comments:

to “DI와 인터페이스”

  1. ISP 가 다른 뜻이 있는건가 찾아보니 Internet Service Provider 밖에 안나오네요. 자바나 스프링에서 ISP 뜻이 다른게 있는건가요?? ㅠ.ㅠ 꾸벅.

  2. 자바찌빠/ http://en.wikipedia.org/wiki/Interface_segregation_principle 입니다.
    대충 생각을 정리하느라 쓴 글이라 설명이 부실하군요.
    http://blog.daum.net/_blog/BlogTypeView.do?blogid=0LaM5&articleno=6447149 이것도 도움이 되실거에요.

  3. pdDgw8 pwsgdqjneflj, [url=http://eomutsssxoti.com/]eomutsssxoti[/url], [link=http://ilbyshegdere.com/]ilbyshegdere[/link], http://vmaytrhadlmp.com/

  4. thanks for share!

  5. CLICK HERE To Investigate
    [url=http://infinitemixedmartialarts.com/news/fashion.php?p=8778]louis tj delbaere,louis vuitton,official online retailers[/url]
    louis tj delbaere,louis vuitton,official online retailers

  6. Investigate This Site
    [url=http://01hp.net/member/shopsiproductsm.php?/orange-hermes-birkin-bag-hermes-store-locations.html]orange hermes birkin bag-hermes-store locations[/url]
    orange hermes birkin bag-hermes-store locations

  7. Click Here To Find Out More
    [url=http://yys.zhichi.tv/member/pmisend.php?/moncler-berlin-stand-out-from-the-crowd-this-season.html]moncler berlin-Stand out from the crowd this season[/url]
    moncler berlin-Stand out from the crowd this season

  8. Try this out
    [url=http://www.huixiangkeji.com/member/receivel.php?/moncler-black-signature-sweatpants-is-happily-fairly-reasonably-priced-2013.html]moncler black signature sweatpants-Is happily fairly reasonably priced 2013[/url]
    moncler black signature sweatpants-Is happily fairly reasonably priced 2013

  9. Sneak A Peek At THIS WebSite
    [url=http://cheapbaileybuttonoutlet.com]grey uggs[/url]
    grey uggs

  10. You Could Try THESE Out
    [url=http://outlettonlineshop.com]ugg store[/url]
    ugg store

  11. mary jane shoes DI와 인터페이스 » Toby’s Epril

  12. mbt cheap shoes DI와 인터페이스 » Toby’s Epril

  13. Hello there, simply turned into alert to your blog through Google, and found that it is truly informative. I am gonna watch out for brussels. I will be grateful when you continue this in future. Numerous other folks might be benefited from your writing. Cheers!

  14. In the WordPress support forum, there are from time to time questions abut trackbacks. I haven’t used it myself, but I found a good tutorial on the OptiNiche cheap nfl jerseys china blog.

  15. Thanks for the auspicious writeup. It if truth be told was a amusement account it. Glance complex to more added agreeable from you! By the way, how could we communicate?

  16. kamagra österreich
    Shop around for lawn revenue which may have home schooling resources. It becomes an inexpensive way to find stuff. You may also satisfy other home schooling mother and father. Check your neighborhood papers. Also, make your eyes open about the weekend for indicators. One never knows what fascinating things you might find out as a result.
    kamagra 100
    Do not technique any wilderness pets while you are camping. A thing that might appear harmless and lovable might be incredibly territorial. Be also positive to not give any creatures, as the process can result in traumas. Prevent retaining any meals inside of your tent to prevent animals from destroying your campsite. Make it stored out safely or perhaps in a nearby plant.
    priligy kaufen
    When capturing an unforgettable celebration, like a wedding event or birthday or showing off event, keep in mind that some of the finest accounts are advised around the sidelines. The primary motion is obviously vital that you record, but it’s usually the intimate, unrehearsed occasions that show the genuine passion in the occasion.
    cialis pris

  17. I believe that is one of the most vital info for me. And i am glad studying your article. But should remark on some general things, The web site taste is wonderful,postcheap nfl jerseys china the articles is really great D.Good task, cheers

  18. I’m often to running a blog and i really admire your content. The article has actually peaks my interest. I’m going to bookmark your website and maintain checking for brand new information.

  19. I just want to tell you that I’m beginner to blogging and site-building and absolutely liked your web blog. Likely I’m likely to bookmark your blog . You actually come with perfect well written articles. Appreciate it for sharing with us your website page.

  20. Very nice post. I just stumbled upon your weblog and wanted to say that I’ve really enjoyed surfing around your blog posts. In any case I’ll be subscribing to your rss feed and I hope you write again soon!

  21. I savour, cause I discovered just what I was taking a look for. You’ve ended my four day long hunt! God Bless you man. Have a great day. Bye

  22. Thanks for the helpful write-up. It is also my belief that mesothelioma has an particularly long latency period, which means that warning signs of the disease won’t emerge right up until 30 to 50 years after the first exposure to asbestos fiber. Pleural mesothelioma, which can be the most common style and impacts the area about the lungs, may cause shortness of breath, upper body pains, including a persistent coughing, which may lead to coughing up maintain.

  23. My spouse and I stumbled over here by a different page and thought I may as well check things out. I like what I see so now i’m following you. Look forward to finding out about your web page yet again.

  24. Very interesting topic, thank you for posting.

  25. Thanks for this article. I will also like to say that it can be hard when you find yourself in school and simply starting out to create a long credit ranking. There are many college students who are simply trying to make it and have a protracted or positive credit history can occasionally be a difficult point to have.

Leave a Reply to michael kors taschen Cancel reply

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

© 2017 Toby's Epril Suffusion theme by Sayontan Sinha