거꾸로 바라본 세상
Observer Pattern(관찰자 패턴)

Observer Pattern(관찰자 패턴) Observer Pattern은 Observer 라는 Child List를 가지고 있는 주체를 필요로 하는데, 주체는 자신의 메서드 중 하나를 호출해 Observer에게 상태 변경을 알린다. 즉, 주체(Subject)는 이벤트를 발생시키는 역할을 하고, 관찰자(Observer)는 이벤트 수신하는 역할을 한다. 이 패턴은은 이벤트 처리를 기반으로 시스템을 구현할 때 필수고, MVC패턴의 중요한 부분이기도 하다. 대부분의 UI라이브러리는 Observer Pattern을 사용한다. 그리고 런타임 중 객체 사이에 일 대 다(1:N) 의존성을 등록할 수 있다. 장점 응용 프로그램 사이의 결합도를 낮출 수 있다. 효율적으로 이벤트를 배포하는데 도움이 된다. UML 다이어..

article thumbnail
Template Method Pattern(템플릿 메서드 패턴)

Template Method Pattern Template Method Pattern 이란?상위클래스에 탬플릿에 해당하는 추상 메서드가 정의되어 있고, 하위 클래스에서 상위 클래스의 추상메서드를 구현하는 것. 즉, 상위 클래스에서 처리의 뼈대를 결정하고, 하위 클래스에서 구체적인 내용을 구현하는 패턴이다. 구현 Template Method의 구현 클래스 1. AbstarctClass(추상 클래스)- 탬플릿 메서드를 구현하는 부분으로 추상메서드를 생성한다. 2. ConcreteClasee(구현 클래스)- AbstarctClass에 정의되어 있는 추상메서드를 구체적으로 구현하는 역할을 한다. 위 그림처럼 AbstractDisplay에서 추상메서드를 만들고, 하위 클래스인 StringDisplay와 CharD..

article thumbnail
Adapter Pattern

Adapter Pattern Adapter Pattern 이란? - Adapter Pattern은 A라는 클래스의 메서드나 기능들을 B에서도 그대로 사용할 수 있게 중간매개체인 교환장치를 만들어 주어 사용하는 패턴이며 Wrapper 패턴이라고도 불린다. 한국에서는 220볼트를 사용하지만 해외에서는 110볼트를 사용해야 한다. 그래서 220볼트를 110볼트로 사용하기 위해서는 중간매게체인 어댑터(Adapter)가 필요하다. 즉, 변환장치같은 역할을 하는 것이다. Adapter Pattern의 종류 1. 클래스에 의한 Adapter Pattern- 상속을 이용한 Adapter Pattern이다. 2. 인스턴스에 의한 Adapter Pattern(위임을 사용한 Adapter Pattern) 1. 클래스에 의한..

article thumbnail
Iterator Pattern

Iterator Pattern - 어떤 하나의 집합의 정보를 하나 씩 호출하여 전체를 순차적(차례대로)으로 검색하여 처리하는 방법으로 Iterator은 무언가를 '반복하다'라는 의미이다. 1. Iterator 인터페이스 - Iterator 인터페이스는 요소를 하나씩 나열하여 루프 변수같은 역할을 수행한다. 쉽게말하면 순서대로 검색하기위한 인터페이스다. Iterator 내의 메소드는 2개 이다. public interface Iterator {boolean hasNext();E next();} hasNext() : 다음요소가 있는지 검사하는 메서드이다. - 다음 요소가 존재한다면 hasNext 반환 값이 true가 되어 조건을 수행하게 되고 false 라면 수행을 멈춘다. next() : 다음요소의 데이터..

Singleton Pattern

1. 싱글톤(Singleton)이란? - 전체 프로그램에서 단 하나의 객체(인스턴스)만 만들도록(생성하도록) 보장해야할 때가 있다. 그래서 단 하나만 생성된다고 해서 싱글톤(Singleton)이라고 부른다.즉, 싱글톤은 공용으로 사용하는 클래스에 적용하면 알맞다. 2. 싱글톤(Singleton) 만드는 법 - 클래스 외부에서 new 연산자로 생성자를 호출할 수 없도록 막아야한다. 이유는 생성자를 호출한 만큼 객체가생성되기 때문이다. (1) 자신의 타입인 정적필드를 하나 선언하고 자신의 객체를 생성해 초기화한다. 그리고 private 접근 제한자를 붙여 필드 값을 변경하지 못하도록 막는다.(2) 생성자자 앞에 pri..

객체지향 프로그래밍
Software Engineering 2016. 1. 4. 16:47

1. 객체지향의 프로그래밍의 탄생 배경 하드웨어는 무어의 법칙으로 2배씩 빨라지고 성장하고 있는 반면 소프트웨어는 발전이 더디고 소프트웨어가 하드웨어의 발전을 따라가지 못하는 현상이 발생하여 소프트웨어 위기(Software Crisis)라는 문제점이 발생함. 소프트웨어의 위기의 주요 원인 중 하나는 기존 절차식 프로그래밍 방법의 낮은 생산성이다. 절차식 프로그래밍은 간결하고 빠른 실행 파일을 만들기는 하지만 규모가 커지면 개발뿐만 아니라 유지보수에 한계를 드러냈다. 또한 코드의 일반성이 없으므로 한 번 만든 코드는 수정없이 재사용되는 경우가 드물고 매번 현실의 문제에 맞게 처음부터 다시 개발해야한다.설사 재사용 하더라도 기존코드를 그대로 쓰기 보다는 필요에 따라 조금씩 수정해야만 했다. 그러다보니 대규모..