본문 바로가기

전체

(70)
헤드퍼스트 디자인 패턴: 디자인 원칙 7~9 7. 정말 친한 친구하고만 얘기하라.(최소 지식 원칙)(Principle of Least Knowledge) = (Law of Demeter) 일곱번째 원칙은 퍼사드 패턴에서 등장했다. 객체 사이의 상호작용, 즉 어떤 객체들이 다른 객체를 사용할 때는아주 가까운 "친구"사이에서만 허용하는 것이 좋다는 원칙이다. 클라이언트는 여러개의 벙커를 소유하고 있고,그 벙커는 다시 여러개의 마린과 파이어벳을 소유하고 있다. 이런 상황에서 클라이언트가 벙커의 모든 마린들이 공격하게 명령하는 callAttackMarines() 를 살펴보자. public void callAttackMarines() { Iterator bkIter = bunkerList.iterator(); while(bkIter.hasNext) { Bu..
헤드퍼스트 디자인 패턴: 디자인 원칙 4~6 4. 서로 상호작용을 하는 객체 사이에서는 가능하면 느슨하게 결합하는 디자인을 사용해야 한다.(Loose Coupling) 네번째 원칙은 스트래티지패턴에 이어 등장한 옵저버 패턴에서 소개됐다.여기서 상호작용이란 일대일, 일대다, 다대다 관계에 속한 클래스간의 의존도를 말하는것 같다. A클래스가 B클래스에 강하게 의존하고 있다.B가 주제가 되는 입장인데, B에서 상태가 변경되거나 코드를 직접적으로 수정한다면A클래스의 상태도 같이 변화하거나 메소드 호출 결과가 달라진다거나 할 수 있다. 만약 B에서도 A의 기능을 사용해야한다면, 또 그런 B를 다른 클래스에서 사용한다면A나 B를 수정하는 것만으로 전체 프로그램에 악영향을 미칠 수 있다. 때문에 Loose Coupling(느슨한 결합)을 항상 고려해야 한다고 ..
헤드퍼스트 디자인 패턴: 디자인 원칙 1~3 1. 애플리케이션에서 달라지는 부분을 찾아 내고, 달라지지 않는 부분으로부터 분리시킨다.첫번째 원칙은 스트래티지 패턴에 해당하는 장에서 등장했다.새로운 요구사항이 추가로 들어왔다. 혹은 기존 화면의 요구사항이 변경됬다.이럴때 우리는 클래스의 메소드나 생성자를 고치고 추가하는 작업을 한다.그 다음에 해당 클래스를 사용하는 모든 코드를 고친다. 생각만해도 끔찍하다. 나중을 위해...코드에 바뀌는 부분이 있다면, 그 행동을 기존 코드에서 분리시켜야한다.* 바뀌는 부분을 따로 뽑아서 캡슐화한다.* 이를 지키면 나중에 바뀌지 않는 부분에 영향을 미치지 않을 채로 그 부분만 고치거나 확장할 수 있다.Ex)class A { public methodA() { 바뀌지 않는 부분바뀌는부분 -> 이 부분을 다른 클래스로 캡..
(jquery-treeview) 2-1. async를 이용한 다이나믹 트리(서버) 이전 글에서 작성한 코드는 단순히 Ajax로 모든 데이터를 가져와 한번에 전체 트리를 구성하는 방식이였다.트리기능을 하나의 도메인에서만 사용하고 노드의 양이 많지 않다면 큰 문제는 없어보인다. 하지만 내가 담당한 화면에서만해도 4개의 화면에서 계층구조로 데이터를 표현해야했다.그래서 단순히 도메인마다 CTRL + C, V(일명 복붙신공)을 사용했는데...아~ 알겠지만 굉장히 지루한 작업이다. 해서 어떻게하면 재사용성을 높일수 있을까 고민해봤다.나는 마침 어제 헤드퍼스트 디자인패턴이라는 책의 1독을 마쳤다.계층구조하면 떠오르는 컴포지트패턴 + 이터레이터패턴? 좋아 이거야. 컴포지트 패턴 컴포지트 패턴을 이용하면 객체들을 트리 구조로 구성하여 부분과 전체를 나타내는 계층구조로 만들 수 있다.책에 나온 컴포지트..
예제 -1- 안드로이드 프로그래밍, 간단한 어플리케이션 안드로이드 스튜디오를 이용하여 안드로이드 프로그래밍을 배우고 있습니다.책에 있는 예제를 풀어보고 과정을 기록하고 설명하는 위주의 포스팅이 될 것 같네요.우선 처음에 알아두면 편한 안드로이드 스튜디오의 단축키 몇 개를 알아볼게요. Ctrl + Alt + L 소스 자동 정렬 (이클립스의 Ctrl + Shift + F)Ctrl + Shift + Enter 커서가 위치한 라인에 세미콜론(;) 찍기Ctrl + Tab 창 전환 (클래스파일과 xml 파일간의 이동에 편의성이 있음) 단축키를 한번에 여러개 외우려고 하면 헷갈리기만하고 잘 쓰지 않게 되므로처음에 알고 사용하면 가장 유용하다고 생각하는 단축키 3개 입니다. 이번에 만들 간단한 어플리케이션은 이런 모양입니다.EditText에 Url을 입력받아 글자 나타내기..
(jquery-treeview) 1. 트리를 표현하는 방법 첫 프로젝트에서 사용하게 된 Jquery-Treeview의 사용법. 이건 뭐 document나 API가 없어서 demo페이지만 보고 개발해야될 처지다; 기존 시스템을 재구축하는 프로젝트인데, 비슷한 UI를 가진 라이브러리가 이거뿐이라 울며 겨자먹기로.. https://github.com/jzaefferer/jquery-treeview 에서 다운받을 수 있다.뭐 딱 SI에서 쓸만한 UI라는 생각이 든다. 다운 받아서 demo폴더로 들어가봤다. 대충 정리하자면1. index.html -> 대충 여러 기능을 테스트해볼 수 있는 데모 페이지2. async.html -> 서버에서 데이터를 가져와 dynamic하게 트리를 그리는 기능의 데모 페이지3. edit.html -> 트리에 노드를 추가, 삭제하는 방법을 보..
안드로이드를 위한 자바문법 -2- 안녕하세요.오늘은 안드로이드를 위한 자바문법의 두번째입니다.원래 이번에 끝내려고 했는데 생각해보니 목차가 9개가 넘어가 버릴 것 같아서자바문법은 3장까지 진행하겠습니다. 어제 쓴 1장을 읽어봤는데 내용이 너무 부실하네요.다시 한번 말씀드리지만 자바 서적 하나를 읽어보시는걸 추천합니다.그림으로 배우는 자바프로그래밍 -> 어려울 수 있는 객체지향언어를 그림으로 풀어나가는 교재열혈강의 자바 -> 무료로 온라인 강의를 제공하므로 독학이 어려운 사람들에게 어울리는 교재 아무래도 프로그래밍이 처음이신분들은 제 포스팅만 보고 따라하기에는큰 무리가 있을듯 싶어요. 목차1. 메소드와 변수의 범위2. 예외 처리3. 연산자와 캐스팅4. 클래스와 인스턴스5. 정적 필드, 정적 메소드, 상수 필드 1. 메소드와 변수의 범위자바..
Mybatis 추가 시 mybatis egovframework.com.cmm.EgovMessageSource Caused by: java.lang.ClassNotFoundException: egovframework.com.cmm.EgovMessageSource http://okky.kr/article/281867 참조하였음. 자신의 메이븐 디렉토리 (나같은 경우 ~/fnel159/.m2) 에서 egovframework\rte\egovframework.rte.fdl.cmmn을 삭제한다. 이후 프로젝트 우클릭 -> [Run as] -> [maven clean] 프로젝트 우클릭 -> [Run as] -> [maven build] 한 뒤 실행하니 오류가 사라졌다. 서버는 정상구동되고 context 파일도 제대로 로드된다.context-mapper.xml 파일에 와 같이 @Mapper와 @Resource를 사용하려고 위..