본문 바로가기

디자인패턴 : Adapter 적응자 디자인패턴 - 클래스의 인터페이스를 사용자가 기대하는 다른 인터페이스로 변환하는 패턴으로, 호환성이 없는 인터페이스 때문에 함께 동작할 수 없는 클래들이 함께 작동하도록 해준다. 클래스 설명 스테이지에 도형을 그린다고 가정했을 때 동그라미, 세모는 동일한 인터페이스를 갖는데, 네모만 예전에 만들었던 클래스를 사용한다고 하자. 그런데 네모를 draw 해주는 메서드가 동그라미와 세모랑 다른 경우, 네모클래스 내부 메서드를 수정하면 쉽게 해결 되겠지만, 다른 업체에서 제공해주는 API인 경우 수정할 수 없을 때가 발생한다. 이렇듯 개발된 클래스의 인터페이스를 수정할 수 없을 때, 일반적인 프로그래밍에서는 각 도형들의 인터페이스를 맞도록 두가지 방법을 사용해서 해결할 수 있다. 클래스 구조 적응자 패턴과.. 더보기
디자인패턴 : Decorator 장식자 디자인패턴 - 주어진 상황 및 용도에 따라 어떤 객체에 책임을 덧붙이는 패턴으로, 기능 확장이 필요할 때 서브클래싱 대신 쓸 수 있는 유연한 대안이 될 수 있다. 클래스 설명 어플리케이션을 제작할 때 가끔 개별적인 객체에 새로운 책임을 추가할 필요가 있다. 이렇게 새로운 서비스의 추가가 필요할 때 이를 해결하기 위해서 일반적인 방법으로 상속을 많이 사용한다. 즉 이미 존재하는 클래스를 상속받고, 또 다른 클래스에서 테두리 속성을 상속받아 이 서브클레스의 인스턴스에 테두리가 있도록 하는 방법이다. 그러나 별로 유용하지 않다. 이는 테두리의 선택이 유연하지 못하고 정적이기 때문이다. 더 나은 방법은 지금 필요한 테두리를 추가하는 다른 객체에다가 해당 구성요소를 둘러싸는 것이다. 이렇게 무엇인가를 감싸.. 더보기
디자인패턴 : Proxy 프록시 디자인패턴 - 다른 객체에 대한 접근을 제어하기 위한 대리자 또는 자리채움자 역할을 하는 객체. 클래스 설정 프록시 패턴을 사용해야 하는 이유는 "왜 객체에 대한 접근을 제어해야하는가?" 라는 물음에서 시작된다. 그 한 가지 이유는 실제 그 객체를 사용할 수 있을 때까지 객체 생성과 초기화에 들어가는 비용 및 시간을 들이지 않겠다는 것이다. 많은 이미지를 불러와야하는 상황에서 우리에게 보여주는 이미지는 한개뿐이기 때문에 모든 이미지를 다 읽어올 필요는 없다. 또한 이미지 참조자가 이미 채워져 있다면, 불러들인 이미지의 복사본만 반환해주므로써 자원을 효율적으로 사용할 수 있다. 클래스 사용방법 var image1: String = new ProxyImage("photo1"); var image2: .. 더보기
디자인패턴 : Strategy 전략 디자인패턴 - 동일 계열의 알고리즘을 정의하고, 각각의 알고리즘을 캡슐화하며, 이들을 상호교환이 가능하도록 만듭니다. 알고리즘을 사용하는 클라이언트와 상관없이 독립적으로 알고리즘을 다양하게 변경할 수 있게한다. 정책(Policy) 패턴이라고도 한다. 클래스 설명 전략패턴은 다음과 같은 상황에서 사용하면 되겠다. 행동들이 조금씩 다를 뿐 개념적으로 관련된 많은 클래스들이 존재할 때, 전략패턴은 많은 행동 중 하나를 가진 클래스를 구현할 수 있는 방법을 제공한다. 알고리즘의 변형이 필요할 때, 이를테면, 기억 공간과 처리 속도 간의 절충에 따라 서로 다른 알고리즘을 정의할 수 있을 것이다. 이러한 변형물들이 알고리즘의 상속 관계로 구현될 때 전략 패턴을 사용할 수 있다. 사용자가 몰라야 하는 데이터를 .. 더보기
ADOBE REFRESH 3월 7일 어도비 릴리즈 세미나 참석 후기... 삼성동 코엑스에서 열린 어도비 릴리즈 세미나 참석차 회사에 들러 법인카드를 들고 삼성역행 전철에 몸을 실었다. 올해 처음 참석하는 세미나인지라 설래는 기분으로... 삼성역에 도착했는데 시청에서 삼성역까지 생각보다 시간이 많이 결렸다. 약간 시간이 오버되서 코엑스에 도착 코엑스에 오면 항상 느끼는거지만 좀 복잡스럽다. 내가 길치끼가 좀 있어서 그른가 ㅋㅋㅋ 다른거 안본다 그냥 3층으로 고고... 약 10분 늦게 도착했지만 아직 시작은 안했다... 다행이다. 09:00 ~ 09:30 키노트 - 리처드 갤반 - 다양한 디바이스와 플랫폼으로 컨텐츠를 전달하면서 마주치게 될 문제점들과 이슈에 대한 내용을 설명을 간략히 했음. 컨텐츠를 개발시 운영체제(윈도우/ 맵/ .. 더보기
입사지원서 보호되어 있는 글입니다. 더보기
자기소개서 보호되어 있는 글입니다. 더보기
컬렉션에 대한 이해 컬렉션( Collection ) 이란? 객체가 자료를 저장하고 관리하는 메커니즘을 제공해주는 구조라고 볼 수 있다. 보통 객체가 그런 기능을 제공하기 위해선 Collection 인터페이스를 사용하는데 그런 클레스들을 컬렉션류 라고 부르고 있다. 컬렉션류의 특징 1. 데이터를 보관할 수 있으며, 수정, 삭제, 삽입, 검색 등의 기능을 가지고 있다. 2. 동적으로 메모리를 확장할 수 있는 기능이 있다. 우리가 흔히 사용하는 배열과 구분짓는 특징은 메모리의 사이즈를 동적으로 확장할 수 있다는 것이다. 배열은 첨자로 배열을 생성하고, 데이터를 할당할 때 정확하게 첨자의 범위 내에서만 사용할 수 있다. 만약 배열의 범위를 벗어난다면 IndexOutOfRangeException을 발생시킨다. 컬렉션류는 데이터를 삽.. 더보기
인터페이스에 대한 이해 개요 이번 주제는 인터페이스에 대한 내용이다. 많은 책을 통해 인터페이스에 대해 공부를 했고, 개념을 명확이 잡으려고 노력했었다. 그리고 현재 프로젝트를 진행할 때 인터페이스 클래스를 도입해서 사용하고 있다. 그런데 막상 누군가가 인터페이스를 왜 사용해야 되는가? 목적인 뭔가? 라고 물어봤을 때 명쾌한 답을 할 수 없었다. 그래서 다시 한번 상기하는 의미에서 implements 라는 키워드와 함께 사용되는 인터페이스에 대해서 알아보도록 하겠다. 인터페이스를 사용하는 이유는 크게 두가지로 분류해본다. 이 내용은 내가 책을 통해 습득한 인터페이스 용도에 대한 지극히 개인적인 글이기 때문에 혹시 이 글을 읽다가 잘못된 내용이 있다면 바른 지적 부탁드립니다. ^^: 인터페이스의 핵심기능 하나 객체가 다양한 데이.. 더보기
문자열을 이용한 함수제어법 개요 여러개의 객체가 놓여져 있고, 그 객체를 클릭했을 때 하나의 리스너에 공통으로 이벤트를 각각 전달한다. 이런 상황에서 각각 객체들의 이벤트를 받아 실행될 함수들이 정의되어 있다고 생각하자. 이럴 때 보통 if 문이나 switch 문을 사용해서 실행될 함수들을 핸들링 하는데, 아래 기존 예제와 같다. 이때 도트연산자 접근법을 배열형태로 접근하게 되면 handler 함수 실행부를 좀 더 간결하게 처리할 수 있다. 사실 이방법은 동적레퍼런스를 접근할 때 주로 사용하는 방법이다. 보통 반복문을 이용해서 여러개의 변수에 접근하고 싶을 때 도트연산자를 배열형태로 접근해서 사용한다. 배열접근법은 변수를 문자열로 접근이 가능하게 해준다. 그럼 도트연산자를 어떠한 상황일 때 사용할 수 있을까? 만약 사용을 할 수 .. 더보기