소프트웨어공학16 플라이 웨이트 (flyweight pattern) 플라이 웨이트 (flyweight pattern) -wr 오브젝트의 공통된 데이터를 공유함으로 메모리사용을 줄여주는 패턴이다. 즉 인스턴스 생성시 메모리 낭비를 줄이려는 목적이다. 어떤 객체를 사용하기 위해 매번 인스턴스를 생성하지 않는다. 한번만 사용하고 다시 필요할때 이전에 생성된 객체를 재사용 할 수있다. 객체생성시 많은 자원을 소모할 경우 해당 패턴을 이용하여 적은 자원으로 객체를 재사용 할 수있다. 예시) 게임의 예시가 가장 올바르게 보인다. 마인크레프트나 심시티같은 게임상에서 나무를 표현할때 혹은 스타그래프트와 같은 전략 게임에서 유닛에 대해 생성을 할때 같은 오브젝트가 있다고 하면 객체를 하나의 팩토리에 저장해 두었다가 재사용 할 수 있다. 만약 이것을 재사용하지 않고 생성될때마다 새롭게 인.. 2023. 1. 27. 어텝터(adapter) 어텝터(adapter) 어뎁터패턴이란? 어뎁터페턴은 우리가 일상생활에서 사용하는 어뎁터와 비슷하다. 호환이 되지 않는 부분을 어뎁터를 통해 호환가능하게 만들어 주는것이다. 헤더퍼스트에서는 어댑터패턴을 이렇게 정의하고 있다. 한 클래스의 인터페이스를 클라이언트에서 사용하고자 하는 다른 인터페이스로 변환합니다. 어뎁터를 이용하면 인터페이스 호환성 문제 때문에 같이 쓸 수 없는 클래스들을 연결해서 사용할 수 있다. 말이 조금 어려운데 조금 쉽게 설명하자면 이럴 것 같다. 원래 사용 중인 인터페이스와 라이브러리가 있는데, 새로운 곳에서 사용하기 위해서는 지금의 라이브러리로는 사용하기 어렵다. 이때 어뎁터패턴을 이용하여 기존 기능을 최대한 살리면서 기능을 제공하는 것이다. 즉 코드의 재사용성을 높이는 의도로 볼 .. 2023. 1. 11. 프록시 패턴(proxy) 프록시 패턴(proxy) 프록시패턴이란 ? 특정 객체에 대한 접근을 제어하거나 기능을 추가 할 수 있는 패턴이다. 초기화지연, 접근제어, 로깅, 캐싱 등에서 다양하게 응용하여 사용 할 수 있다. Proxy Pattern 은 우리가 알고있는것 처럼 구조에 대한 패턴중 하나이다. 기본 기능을 가지고 있는 어떠한 Subject 가 있다고 하면 우린 이것에 직접 손을 대지 않고 Proxy class 통해 앞서 이야기한 초기화지연, 접근제어, 로깅등등의 기능을 구현한다. 그림으로 보면 다음과 같다. 클라이언트에서는 Subject 인터페이스를 참조하고 실제 구현은 RealSubject 클레스에 구현되어 있다. RealSubject 에 구현된 기능을 사용할때 접근제어, 로깅, 캐싱들을 이용하고자 할경우 Proxy C.. 2023. 1. 5. 책임연쇠(chain-of-responsibility pattern) 책임연쇠(chain-of-responsibility pattern) 행동패턴중 하나인 책임연쇠패턴이다 근데 어찌보면 우리가 자주사용하는 Spring MVC 의 (혹은 이전 struts ) ServletFilter 처럼 느껴진다. 근데 이건 J2EE 기반기술에 적용된 패턴으로 응답 전,후의 어떤 작업을 할때 사용 할 수 있는것으로(구조패턴중 하나임) 책임연쇠 패턴(행위패턴)과는 다른 의미로 사용된다. 여기서 말한 필터 패턴(Intercepting filter pattern)은, 아키텍처 패던중 하나인 파이프 필터패턴 (pipe-filter pattern)이랑은 다른 내용이다 어째튼 책임연쇠패턴이 뭔지 한번 알아보자. 책임연쇠패턴이란 ? 핸들러의 체인을 따라 요청을 전달할 수 있게 해주는 행동 디자인 패턴이.. 2023. 1. 5. 이전 1 2 3 4 다음