오늘의 이야기를 시작해 보자.
앞서 그린 낙서적 스타일 그림을 보도록 하자.
이런게 있다면..
여기서 우리는 M을 변경해보도록 하자…
어쩌라고?를 외칠건데… 여기서.. 저렇게 되기위해서 우리는 머리를 굴려야 하는것이다.
C에서 M을 호출하는 루틴을 보면..
이 둘중에 하나를 적을수 있을것이다.
위의 코드는 둘다 동일하다.
예를 들어서
USB PORT = new 메모리스틱();
메모리스틱 PORT = new 메모리스틱();
과 동일하다는 이야기다.
처음 OOP를 접하는 사람들은 이런걸 잘 이해하지 못하는 경향이 있다.
예를 다시금 들어보자.
에서 우리는 이걸 평소에 하도 많이 사용하니 개념을 가지지 않는데
만 존재한다고 생각해 보자.
저 문자열을 어딘가 다시 사용하기 위해서는 어떻게 해야할까?
저 문자열이 적혀 있는 어느 공간 또는 주소값을 우리가 인식할수 있는곳에 넣어야 하는것이다.
실제적으로 tem에는 주소값이 들어가게된다.
조금 다르게 설명을 해보자.
여기서
라고만 하면.. 아래의 테스트 클래스에 적어놓은 "test class"가 출력이 될것이다.
OOP를 처음 접할수록
왠지 이렇게 적지 않으면 큰일이 날것 같다고 생각하는게 첫번째 문제이다.
뒤에 test() 라고 괄호를 적는것은 당신이 호출할 생성자함수를 말하는것이다.
(매서드와 함수라는 용어를 같이 사용할것이다. 이 둘은 같은 의미이다.)
단지 우리가 이렇게 적는것은 test란 개체를 나중에 이용하기 위해서 주소값을 가지는것을 의미한다.
그럼..
이 문장에 대해서 다시금 이야기를 해보자.
인터페이스로 적은것 또한 주소값을 저장하니 크게 문제없이 동일한것이 된다는 이야기다.
USB PORT = new 메모리스틱();
메모리스틱 PORT = new 메모리스틱();
와 마찬가지로..
USB PORT = new 프린터();
도 당연하게 이해해주기 바란다.
우리가 95년도에 처음 windows가 P&P라는 (PLUG & PLAY)란 이야기가 나왔을때 그저 오~~ 라는 생각을 가졌는지 모르겠으나 실제적으로 이것이 가능하게 되는 개념이 지금의 개념이다.
이미 10년도 휠씬전에 나온개념이고 이 개념덕분에 OOP가 살아있는것이다. (허접한 은닉성같은건 잊어버려라..)
//-------------------------------------------------------------------
어찌되었든.. 모듈을 변경하기 위해서.. (그림을 봐라 ms-sql에서 오라클로 변경이 되었다.)
컨트롤에 적은 코드를...
하여간.. 한줄을 바꾸어야 한다는것이다.. (한줄.. ㅠ.ㅠ)
앞서 열심히 그림을 그려줬지만.. 이 C라고 적은녀석은 변경하기 싫다는것이다.
변경이란 다시 컴파일을 해야된다는 이야기 이고 게다가 저렇게 선언한 코드가 매 폼마다 있다고 가정한다면… 그것참 거시기 한것이다. 물론 그렇게 코딩할수도 있고 한곳에다만 적어서 코딩할수도 있을것이다.(역시 소형프로젝트에는 절대적 무용지물인 이야기들이다..)
그래서 이것을 분기분으로 작성하기도 하자.
말하자면 이정도 될것이다.
이것을 내부에 두는게 아니라… 외부의 클래스로 만들어 두고 그것을 함수로 불러다 사용하자는 것이 이 심플팩토리의 이야기다.
왜 이렇게 하냐면 앞서 만들었듯이 계속 Excel이라든지 Access라든지 선택사항이 늘어나기 때문에 이 선택사항에 대한 함수만 변경하기 위해서 변경부위를 밖으로 빼자는 이야기다.
이걸 가지고 일반적으로
함수형 팩토리 패턴
또는
Simple Factory 패턴이라고 한다.
뭐 말그대로 심풀하고.. 하나의 함수로 이루어질 수준이라서 굳이 설명할것들도 없다.
마지막으로 위의 이야기가 다 필요없는.. 기본적으로 ms에서 이것까지 지원하도록 만들어 두었다.
http://mkex.pe.kr/kims/bbs.php?table=Tbl_Lecture_CSharp&query=view&uid=68&p=1
이 링크의 강좌를 보도록 하여라..
원본 위치 <http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=18&MAEULNO=8&no=1602&page=1>
'C# DB 코딩 강좌' 카테고리의 다른 글
C#을 이용한 DB코딩 21 (0) | 2008.11.19 |
---|---|
C#을 이용한 DB코딩 20 (0) | 2008.11.14 |
C#을 이용한 DB코딩 19 (0) | 2008.11.14 |
C#을 이용한 DB코딩 18 (0) | 2008.11.14 |
C#을 이용한 DB코딩 16(실습파일포함) (0) | 2008.11.14 |
C#을 이용한 DB코딩 15 (0) | 2008.11.14 |
C#을 이용한 DB코딩 14 (0) | 2008.11.14 |
C#을 이용한 DB코딩 13 (0) | 2008.11.14 |
C#을 이용한 DB코딩 12 (0) | 2008.11.14 |
C#을 이용한 DB코딩 11 (0) | 2008.11.14 |