일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- mybatis
- weblogic 10
- QueryDSL
- RabbitMQ
- grafana
- WebLogic
- netflix oss
- MySQL
- Hibernate
- Netty
- argo cd
- redis
- spring boot redis
- Spring Open Feign
- ChannelPipeline
- Airflow
- vue.js
- KAFKA
- cassandra
- jmeter
- docker-compose
- docker compose mysql
- Docker Compose
- Redis Sentinel
- Selenium
- coalesce
- docker
- spring boot
- JPA
- spring cloud
- Today
- Total
목록소프트웨어공학 (16)
IT.FARMER
플라이 웨이트 (flyweight pattern) -wr 오브젝트의 공통된 데이터를 공유함으로 메모리사용을 줄여주는 패턴이다. 즉 인스턴스 생성시 메모리 낭비를 줄이려는 목적이다. 어떤 객체를 사용하기 위해 매번 인스턴스를 생성하지 않는다. 한번만 사용하고 다시 필요할때 이전에 생성된 객체를 재사용 할 수있다. 객체생성시 많은 자원을 소모할 경우 해당 패턴을 이용하여 적은 자원으로 객체를 재사용 할 수있다. 예시) 게임의 예시가 가장 올바르게 보인다. 마인크레프트나 심시티같은 게임상에서 나무를 표현할때 혹은 스타그래프트와 같은 전략 게임에서 유닛에 대해 생성을 할때 같은 오브젝트가 있다고 하면 객체를 하나의 팩토리에 저장해 두었다가 재사용 할 수 있다. 만약 이것을 재사용하지 않고 생성될때마다 새롭게 인..
어텝터(adapter) 어뎁터패턴이란? 어뎁터페턴은 우리가 일상생활에서 사용하는 어뎁터와 비슷하다. 호환이 되지 않는 부분을 어뎁터를 통해 호환가능하게 만들어 주는것이다. 헤더퍼스트에서는 어댑터패턴을 이렇게 정의하고 있다. 한 클래스의 인터페이스를 클라이언트에서 사용하고자 하는 다른 인터페이스로 변환합니다. 어뎁터를 이용하면 인터페이스 호환성 문제 때문에 같이 쓸 수 없는 클래스들을 연결해서 사용할 수 있다. 말이 조금 어려운데 조금 쉽게 설명하자면 이럴 것 같다. 원래 사용 중인 인터페이스와 라이브러리가 있는데, 새로운 곳에서 사용하기 위해서는 지금의 라이브러리로는 사용하기 어렵다. 이때 어뎁터패턴을 이용하여 기존 기능을 최대한 살리면서 기능을 제공하는 것이다. 즉 코드의 재사용성을 높이는 의도로 볼 ..
프록시 패턴(proxy) 프록시패턴이란 ? 특정 객체에 대한 접근을 제어하거나 기능을 추가 할 수 있는 패턴이다. 초기화지연, 접근제어, 로깅, 캐싱 등에서 다양하게 응용하여 사용 할 수 있다. Proxy Pattern 은 우리가 알고있는것 처럼 구조에 대한 패턴중 하나이다. 기본 기능을 가지고 있는 어떠한 Subject 가 있다고 하면 우린 이것에 직접 손을 대지 않고 Proxy class 통해 앞서 이야기한 초기화지연, 접근제어, 로깅등등의 기능을 구현한다. 그림으로 보면 다음과 같다. 클라이언트에서는 Subject 인터페이스를 참조하고 실제 구현은 RealSubject 클레스에 구현되어 있다. RealSubject 에 구현된 기능을 사용할때 접근제어, 로깅, 캐싱들을 이용하고자 할경우 Proxy C..
책임연쇠(chain-of-responsibility pattern) 행동패턴중 하나인 책임연쇠패턴이다 근데 어찌보면 우리가 자주사용하는 Spring MVC 의 (혹은 이전 struts ) ServletFilter 처럼 느껴진다. 근데 이건 J2EE 기반기술에 적용된 패턴으로 응답 전,후의 어떤 작업을 할때 사용 할 수 있는것으로(구조패턴중 하나임) 책임연쇠 패턴(행위패턴)과는 다른 의미로 사용된다. 여기서 말한 필터 패턴(Intercepting filter pattern)은, 아키텍처 패던중 하나인 파이프 필터패턴 (pipe-filter pattern)이랑은 다른 내용이다 어째튼 책임연쇠패턴이 뭔지 한번 알아보자. 책임연쇠패턴이란 ? 핸들러의 체인을 따라 요청을 전달할 수 있게 해주는 행동 디자인 패턴이..
추상 팩토리 (abstract factory Pattern ) 추상 팩토리 패턴은 객체 생성시 구체적인 특정클레스에 의존하지 않고 추상화된 객체를 의존함으로 결합도를 낮춰주고 기존 코드를 수정하지 않고(최소한의 수정으로) 상황에 따라 필요한 객체를 생성하여 사용 할 수 있다. 특징 새로운 모듈이나 기능이 추가되었을대 기존에 작성하였던 코드를 손대거나 수정하지 않고 추상팩토리로 상속받아 모듈을 구현함으로 새로운 기능을 추가할수있다. 추상화한 객체를 의존함으로 결합도가 높은 클레스의 결합도를 낮춰주고 느슨하게 만들어 준다. 추상팩토리패턴은 메서드팩토리패턴과 전혀 성격이 다르다. 또한 추상팩토리 패턴이 메소드팩토리 패턴보다 상위기념이거나 호환할수있는 개념이 아니라는것을 알아두고 가자 팩토리 메소드 패턴 인스턴..
팩토리 메소드 패턴(Factory method pattern / Factory pattern) 생성패턴에 속한 팩토리 메소드패턴(Factory Method pattern)은 보통 팩토리 패턴(Factory Pattern )으로도 알려져 있다. 여러 가지 샘플과 개념들이 많다보니 조금 햇갈릴수있는데 여기서 개념을 확실하게 하고 가야한다. 성패턴에 속한 팩토리 패턴엔 3가지가 있다. 심플팩토리 패턴 - 인스턴스화 로직을 클라이온트에 노출시키지 않고 객체를 장성하고 공통인터페이스를 통해 새로 작성된 객체를 참조한다. 팩토리메서드 패턴 - 오브젝트를 생성하기위한 인터페이스를 정의하지만 서브클레스에서 인스턴스화 시킬 클래스를 결정하고 공통인터페이스를 통해 새로 만들어진 오브젝트를 참조하도록 한다. 추상팩토리 패턴..
템플릿 메소드 (Template Method Pattern) 소프트웨어 공학에서 동작상의 알고리즘의 뼈대를 정의하는 디자인패턴이다. 알고리즘의 구조를 변경하지 않고 특정 단계들을 다시 정의 할 수 있게 해준다. - 위키 템플릿 메소드 패턴은 슈퍼클래스에서 처리의 흐름을 제어하며 서브 클래스에서 그 처리의 구체적인 기능을 구현하는 패턴이다. 여러개의 서브클래스에서 공통으로 사용하는 기능은 수퍼클레스에서 구현하고 다른 기능들은 서브클레스에서 구현한다. 전체적인 알고리즘의 구조(작업 플로어가 동일함)는 같으나 세부적인 내용이달라 각 서브클래스마다 다르게 구현해야 할때 사용한다. 예시 (1) : 케릭터 생성 및 최초 듀토리얼 진행 게임케릭터 생성후 최초 튜토리얼 진행시 같은 패턴으로 진행되나 보상받는 아이템이 ..
디자인 패턴은 여러 분류로 그룹화 되어 있으며, 크게 3세가지로 나뉜다. 보통 우리가 알고 있거나 자주 이야기 되는 패턴은 생성패턴, 구조패턴, 행동패턴이며, 그외에도 동시실행 패턴도 있다. UML과 같은 일종의 설계 기법 및 설계방법이며, 소프트웨어 엔지니어링에서 디자인패턴은 소프트웨어 디자인시에 일반적으로 발생되는 문제이대한 일반적인 해결책이다. 디자인 패턴으로 코드를 직접 변환하거나 디자인한다고 해서 해결되는 것은 아니며, 이를 해결하기 위한 설명 혹은 템플릿 이라 생각하면 된다. 사용하는(패턴 화된) 이유 ? 다른 사람이 작성한코드를 보고 이해하는건 쉽지 않다. 이해되지 않는 코드드를 수정하거나 새로운 기능을 추가할때는 의도치 않은 결과나 버그가 발생되곤 한다. 디자인 패턴을 사용하한다면 이는 위..
Design pattern 디자인 패턴은 여러 분류로 그룹화 되어 있으며, 크게 3세가지로 나뉜다. 보통 우리가 알고 있거나 자주 이야기 되는 패턴은 생성패턴, 구조패턴, 행동패턴이며, 그외에도 동시실행 패턴도 있다. UML과 같은 일종의 설계 기법 및 설계방법이며, 소프트웨어 엔지니어링에서 디자인패턴은 소프트웨어 디자인시에 일반적으로 발생되는 문제이대한 일반적인 해결책이다. 디자인 패턴으로 코드를 직접 변환하거나 디자인한다고 해서 해결되는 것은 아니며, 이를 해결하기 위한 설명 혹은 템플릿 이라 생각하면 된다. 사용하는(패턴 화된) 이유 ? 다른 사람이 작성한코드를 보고 이해하는건 쉽지 않다. 이해되지 않는 코드드를 수정하거나 새로운 기능을 추가할때는 의도치 않은 결과나 버그가 발생되곤 한다. 디자인 ..