본문 바로가기
728x90

설계/디자인 패턴22

[Java 언어로 배우는 디자인 패턴 입문] 클래스로 표현하기 22. Command 출처 : 책 - java 언어로 배우는 디자인 패턴 입문 22. Command - 명령을 클래스로 표현하기 1. 목적 - 말 그대로 메소드들의 실행들을 묶어 명령 클래스로 만든다. - 장점 : 명령을 하나의 물건처럼 표현한다. 명령의 묶음 클래스가 존재하며, 명령 클래스의 수정없이 새로운 명령 클래스2를 추가해 명령을 늘릴 수 있다. ( OCP 부합 ) - 역할 Client - Main 클래스( Invoker의 execute 메소드 호출 ) Invoker - Command 클래스들의 집합 Command - Command 클래스 Receiver - Command 클래스의 명령을 받아 실제로 수행. 2. 예제 (1) MacroCommand - Invoker 역할, Command 클래스들의 집합. 명령 저장의.. 2021. 1. 19.
[Java 언어로 배우는 디자인 패턴 입문] 낭비 없애기 21. Proxy 출처 : 책 - java 언어로 배우는 디자인 패턴 입문 21. Proxy - 필요해지면 만들기 1. 목적 - Proxy의 뜻은 '대리인'이다. 가벼운 인을 대리인이 처리하도록 하는 방법이다. - 가벼운 처리와 무거운 처리를 구분 하므로써 속도가 향상된다. Ex) 무거운 파일들 중 가벼운 파일만 불러올 경우, 전체를 다 가져올 필요는 없다. - 물론 Proxy를 만들지 않고, 오리지날 클래스에 필요할 때 그때 인스턴스 생성을 하게 할 수 있다. 하지만 Proxy를 만들면 오리지날 클래스를 건들지 않고 대리인만 수정하여 대신할 일을 정할 수 있다. 만약 Main에서 Proxy를 사용하고 싶지 않을경우 바로 오리지날 인스턴스를 생성해 넣어주면 된다. cf) HTTP Proxy : 크롬같은 브라우저에서 웹페이.. 2021. 1. 17.
[Java 언어로 배우는 디자인 패턴 입문] 낭비 없애기 20. Flyweight 출처 : 책 - java 언어로 배우는 디자인 패턴 입문 20. Flyweight - 동일한 것을 공유해서 낭비 없애기 1. 목적 - 객체를 가볍기 하기 위한 것. 가볍다는 것은 적은 메모리를 사용하는 것을 의미한다. - 인스턴스를 가능한 대로 공유시켜서 쓸데없이 new로 인스턴스 생성을 하지 않는다. - 주의할점 1. 공유되는 정보를 수정하면 전체에 영향을 미친다. 2. 어떤 정보를 공유하게 할것이고, 어떤정보를 각자 클래스에 나눌것인지 판단해야 한다. Ex) 색상 속성을 공유하는 곳에 같이 설정할 수도 있고, 개별 클래스에 따로 속성값을 넣게 만들어줄 수도 있다. 3. 사용하지 않아도 공유되어 참조되고 있으므로 garbage collection이 인스턴스를 삭제하지 않는다. > 인스턴스에 null을 .. 2021. 1. 17.
[Java 언어로 배우는 디자인 패턴 입문] 상태를 관리하기 19. State 출처 : 책 - java 언어로 배우는 디자인 패턴 입문 19. State - 상태를 클래스로 표현하기 1. 목적 - 규모가 크면 작은 클래스로 쪼개서 관리하는 것이 좋다. - Context 내부 State 인터페이스의 메소드가 실행된 후에 Context의 State를 다른 State 구현 클래스로 바꿔준다. - 상태1에 내부에서 상태2로 전환시키기 때문에 상태 클래스들 사이에 의존성이 있다. - 새로운 상태 클래스를 추가하는 것은 간단하다. 하지만 상태전환 로직은 상태 클래스들의 메소드의 수정이 필요하다. 2. 예제 책보다 위키백과의 예제가 더 좋은 것 같기에 가져왔다. 상태 패턴 - 위키백과, 우리 모두의 백과사전 (wikipedia.org) 상태 패턴 - 위키백과, 우리 모두의 백과사전 위키백과, .. 2021. 1. 17.
728x90