728x90 분류 전체보기163 [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. [Java 언어로 배우는 디자인 패턴 입문] 상태를 관리하기 18. Memento 출처 : 책 - java 언어로 배우는 디자인 패턴 입문 18. Memento - 상태를 저장하기 1. 목적 - 말 그대로 현재 상태를 저장하는 구조이다. - 유의해서 볼 점은 상태를 저장한 클래스의 메소드에 public이 없다는 점이다.(예제에서는 1개만 있음) 은닉하기 위함. - 의의 : 저장한 상태를 따로 분리함으로써, 저장한 상태를 파일로 만드는 작업등을 추가로 할 때 오리지날 클래스는 건드리지 않도록 유지할 수 있다. 2. 예제 (1) Memento - 상태 저장. getMoney 메소드만 public 선언이 되어있다. (정보 은닉) 같은 패키지인 Gamer 클래스에서만 Memento 메소드를 사용할 수 있고, Main에서는 호출할 수 없다. package game; import java.uti.. 2021. 1. 15. [Java 언어로 배우는 디자인 패턴 입문] 상태를 관리하기 17. Observer 출처 : 책 - java 언어로 배우는 디자인 패턴 입문 17. Observer - 중개인을 통해서 처리하기 1. 목적 - MVC 패턴에서 Model과 View의 관계는 Subject(Model)과 Observer(View) 대응한다. - Mediator과 Observer 패턴은 비슷하지만, Mediator 패턴은 Colleague(Subject) 1개의 변화가 Mediator(Observer)를 통해 다수의 Colleague를 조정하기 위함이고 Observer 패턴은 Subject 1개의 변화가 다수의 Observer에게 알려서 동기화를 이루는 것이 핵심이다. - Subject의 상태가 변화 - Observer 메소드 호출의 형태 - Subject 클래스 속 Observer 인스턴스는 여러 종류 Obs.. 2021. 1. 14. 이전 1 ··· 22 23 24 25 26 27 28 ··· 41 다음 728x90