2009 Aug 27

- by
Sean Lee

OOP

절차지향 언어와 객체지향 언어

얼마 전, 반 IF(Anti-If) 코드쓰기 유행(?) 이 있었다.

줄여서 이야기하면 객체지향으로 프로그래밍을 할 때 선택-IF문을 사용해서 분기-하는 것을 다형성(서브타입다형성)을 통해 객체지향적으로 프로그래밍 해야 한다는 것이다. 그렇게 되면 해당 객체를 이용하는 부분에서는 선택을 하지 않고 쉽게 객체의 액션을 처리할 수 있다.

이렇게 되면 호출해서 사용하는 쪽에서 서브타입이 추가되더라도 변경 없이 코드를 유지할 수 있다는 장점이 있다. 덧붙여 서브타입 객체의 생성을 팩토리로 만들어서 쓰거나, 직접적으로 서브타입 인스턴스를 생성하지 않도록 하면 코드는 더욱 더 유지하기 쉬워진다.

물론 이를 위해 설계를 잘 해야 한다는 단점이 있다.

오늘은 Data객체와 이를 View에서 나타내는 간단한 2-tier를 작성할 때 위 기법을 사용해 봤다. View Package는 Data Package에 의존한다. Data 안에서는 팩토리와 서브타입 다형성을 사용하고 View와 Data를 연결하기 위해서 C#의 Reflection을 사용하였다.

이는 Data-View가 1:1 매칭일 때 사용가능한데, M-N 매칭으로 넘어가려면 어떻게 할까 하다가, Data쪽에 View가 받아서 처리할 수 있도록 그냥 ViewType 프로퍼티를 하나 정의해서 사용했다.