state pattern을 flyweight pattern (예 : 플라이 웨이트 패턴은 메모리를 절약하기 위해 상태 개체를 만드는 데 사용)의 예를 공유 할 수 있습니까?상태 및 FlyWeight 패턴
업데이트 : 주 패턴과 fw 패턴의 조합은 어떻게 사용합니까?
state pattern을 flyweight pattern (예 : 플라이 웨이트 패턴은 메모리를 절약하기 위해 상태 개체를 만드는 데 사용)의 예를 공유 할 수 있습니까?상태 및 FlyWeight 패턴
업데이트 : 주 패턴과 fw 패턴의 조합은 어떻게 사용합니까?
박싱 예컨대
(작은 정수 값) 오브젝트 생성을 최소화하기 위해 플라이 웨이트 패턴을 사용 Boolean 및 Byte의 경우 가능한 모든 값이 캐시됩니다.
Java는 많은 구성 요소에 대해 상태를 사용하지만 상태 시스템은 상태별로 전환되는 기능도 포함합니다. 여기
난 당신이 두 가지 질문을 가지고enum
http://vanillajava.blogspot.com/2011/06/java-secret-using-enum-as-state-machine.html
* "오토 박싱은 플라이급 패턴의 예"* [sic] ... 조금 이상한 문구와 더 이상한 사례가 아닌가요? 작은 값에 대한 캐싱/재사용은 autoboxing이 수행하는 것과 비교하여 세부 사항이라고 말할 수 있습니다. 또한 플라이급 패턴의 목표는 메모리를 절약하는 것이며 자동 저장은 메모리를 절약하기위한 ** 마지막 ** 항목입니다. Trove TIntIntHashMap에 상응하는 것과 비교하여 기본 Java Map에 정수 {key, values}를 저장할 때 메모리 낭비를 언급하지 않습니다. 그래서 저는 "오토 박싱은 플라이급 패턴의 예"라고 말하면 조금 이상하다고 생각합니다. – TacticalCoder
플라이 웨이트는 실제로 함수가 실제로하는 것과 비교하여 세부적인 것입니다. 이는 대부분 투명하게 디자인 되었기 때문입니다. 즉 성능상의 이유로 순전히 완료됩니다. –
HashMap과 TIntIntHashMap 사용의 차이점은 항목이 구성되는 방식입니다. 정수가 캐시 된 경우 크기는 동일합니다. 예 : 만약 당신이 'TIntArrayList'와'ArrayList
나는 일반적으로 조건문을 피하기 위해 상태 패턴을 사용합니다. 사용하는 대신
:
이switch (state)
{
case ParserState.BeforeMethod:
//do some processing
break;
case ParserState.InMethod:
//do some processing
break;
}
난 그냥 쓸 수 있습니다 :
currentState = currentState.process(context);
는 샘플 클래스는 논리, 즉
public class SomeClass : ParserState
{
public ParserState process(IParserContext context)
{
//do some proceccing
if (m_completed)
return new SomeOtherState();
return this;
}
}
처럼 보일 수는 소규모 클래스로 이동 특정 상태를 처리하는 데 사용됩니다. 명확한 책임
사용하여 쓴 예입니다. 각 패턴마다 하나씩. 그 중 하나를 별도의 질문으로 이동하십시오. – jgauffin
위키 페이지 *에는 예제가 * 있습니다. Java에서. –
@jgauffin 내가 볼 수있는 한, 그가 한 가지 질문을했다. 어떻게 상태와 fw 패턴을 조합 할 것인가. – DPM