일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 이더리움
- 10817
- 단계별로 풀어보기
- 비트 코인
- 솔리디티
- 가상 화폐
- 더하기 사이클
- 세 수
- X보다 작은 수
- Baekjoon
- 자바스크립트
- 함수 사용하기
- 평균은 넘겠지
- 백준
- 시험 성적
- 그대로 출력하기
- 10871
- if문 사용해보기
- 1065
- Mist
- 1110
- Remix
- 별 찍기 - 11
- Dapp
- 2448
- 1546
- for문 사용해보기
- 1%d
- 알고리즘 문제풀이
- 블록 체인
- Today
- Total
목록Technology (82)
블링블링 범블링
팩토리 메서드 패턴(Factory Method Pattern) 팩토리 메서드 패턴이란 생성객체를 생성하기 위한 인터페이스를 정의하는 데 어떤 클래스의 인스턴스를 생성여부는 서브 클래스에서 결정하는 패턴이다. 즉, 팩토리 메서드 패턴을 이용하면 클래스의 인스턴스를 만드는 일을 서브 클래스에게 위임하는 것이다. 팩토리 메서드가 객체 생성을 처리하며, 객체를 생성하는 코드를 캡슐화한다. 서브 클래스에서 어떤 클래스를 만들지 결정하므로써 객체 생성을 캡슐화한다. 이렇게 하면 슈퍼클래스에 있는 클라이언트 코드와 서브클래스에 있는 객체 생성 코드를 분리시킬 수 있다. 어떤 기능이 추가될지 미리 알 수 없는 경우에도 매우 유용하다. 기능이 추가되면 서브 클래스에서 만들고 팩토리 메소드를 구현하면 된다. 인터페이스를 ..
프록시 패턴(Proxy Pattern) 프록시의 의미는 "대리자"라는 의미다. 무언가를 대신해서 일을 해주는 사람을 말하는데 프록시패턴(Proxy Pattern)은 대리자로써 일을 맡기면 그 일을 처리하고 완료되면 결과를 알려주는 패턴이다. 프록시 패턴을 사용하는 대표적인 예로는 imageListView가 있다. 이미지를 리스트를 통해서 보여줘야하 하는 상황일 때, 화면에 보이지 않는 이미지뷰도 로딩을 하면 이미지를 불러오는 시간 때문에 대기시간일 길어질 수도 있고, 메모리를 많이 차지하게 된다. 이러한 점을 해결하기 위한 방법은 이미지캐시방법이 있다. 매번 새롭게 이미지를 로딩하는 것이 아니라 메모리나 디스크에 저장해서 매번 이미지를 로딩하지 않고, 이미지를 캐시하는 방법이다. 하지만 이미지를 로딩하는..
데코레이터 패턴(Decorator Pattern) 데코레이터 패턴은 객체에게 추가적인 요건을 동적으로 첨가할 수 있는 것을 말한다. 데코레이터는 서브클래스를 만드는 것을 통해서 기능을 유연하게 확장할 수 있다. 데코레이터 말 그대로 무언가 첨가되고, 꾸며주는 구현을 말한다. 위 그림에서는 데코레이터 패턴의 기본 클래스다이어그램을 보여준다. 단순히 이것만 봐서는 곧바로 이해가 되지 않기 때문에 예시를 통해서 이해하는 게 좋다고 생각한다. 보통 기능의 확장을 할 때 상속을 이용하지만 다양한 조합의 기능의 확장이 요구될 때는 클래스가 불필요하게 증가하는 문제가 발생한다. 이에 대한 예시로 커피를 주문할 때 휘핑크림이나, 우유를 첨가할 수도있고, 시럽도 추가가 가능하다. 그리고 포장여부까지 더해지면 점점 기능이..
어댑터패턴(Adapter Pattern) 어댑터패턴(Adapter Pattern)은 우리가 주변에서 본 어댑터 기능을 생각하면된다. 사용하려는 물건과 코드가 맞지않은 경우 어댑터를 통해 코드를 변화시켜준다. 이처럼 어탭터 패턴은 서로 다르게 구현된 인터페이스를 사용하려는 다른 인터페이스로 변환하는 것을 말한다. 두 개의 인터페이스가 다른 경우 한 쪽의 인터페이스에 맞춰서 하나로 만들어 사용하게 하는 구조다. 어댑터 패턴은 두 가지로 나뉘는데 하나는 객체를 내부에 선언해 사용하는 객체 어댑터패턴이고, 다른 하나는 인터페이스를 상속받아 사용하는 클래스 어댑터패턴이 있다. 클래스 어댑터패턴은 다중상속이 필요한데 자바에서는 클래스의 다중상속을 지원하지 않는다. 따라서 클라이언트가 인터페이스가 아닌 일부 구현이 ..
상태패턴(State Pattern) 상태패턴은 객체의 상태에 따라서 각가 다른 행위를 할 수 있도록 캡슐화한 패턴을 말한다. 동적으로 행동을 교체할 수 있다. 전략패턴과 구조는 같지만 쓰임과 용도가 다르다. 예시를 통해 살펴보자. 커피머신이 있다고 가정하자. 동작 버튼을 눌렀을 때 커피머신의 상태에 따라 다른 동작을 한다. 동작버튼을 눌렀을 때 커피상태가 정상작동이면 커피를 주겠지만, 만약 컵이 없는 경우에는 컵이 없다고 메세지가 뜰 것이다. 그리고 청소하고 있는 상태라면 청소상태를 종료하고 다시 동작상태로 바꿔줘야한다. 이 설명을 아래 코드로 옮겨보았다. [기존의 코드]?12345678910111213141516171819202122232425262728293031323334353637383940414..
템플릿메서드패턴(Template Method Pattern) 템플릿메서드패턴이란 구체적인 구현은 다르지만 전체적인 알고리즘의 골격이 같은 경우 적용하는 패턴을 말한다. 템플릿메서드패턴은 상위클래스에서 처리의 흐름을 제어하고, 하위클래스에서 처리의 내용을 구체화한다. 여러 클래스에서 공통되는 사항은 상위 추상클래스에서 구현하고, 각각의 상세부분은 하위 클래스에서 구현하는 특징을 가지고 있다. 때문에 템플릿메서드 패턴은 코드의 중복을 줄이고, 리팩토링에 유리한 패턴으로 상속을 통한 확장 개발 방법이다. 템플릿메서드 패턴은 주로 전략패턴과 가장 많이 사용되는 패턴 중에 하나다. 예시를 통해서 템플릿메서드패턴을 적용해보자. 가장 대표적인 예로 커피와 차를 만드는 과정이 있다. 커피를 만드는 과정은 물을 끓인다-..
전략패턴(Strategy Pattern) 전략패턴이란 동적을 알고리즘을 교체할 수 있는 구조를 말한다. 알고리즘 인터페이스를 정의하고, 각각의 알고리즘 클래스별로 캡슐화하여 각각의 알고리즘을 교체 사용 가능하게 한다. 즉, 하나의 결과를 만드는 목적(메소드)는 동일하나, 그 목적을 달성할 수 있는 방법(전략, 알고리즘)이 여러가지 존재할 경우에 사용하는 패턴이다. 보통 기본이 되는 템플릿 메서드(Template Method Pattern)과 함께 가장 많이 사용되는 패턴 중에 하나다. 아래 그림은 전략패턴을 적용한 클래스다이어그램이다. Context의 변경을 최소화하고, 인터페이스를 통해 다양한 타입을 만들어 코드를 변경할 수 있다. 이해를 돕기 위해서 예시를 들어 전략패턴을 적용해보자. 급여를 계산하는..