Usar compartilhamento para apoiar eficientemente grandes quantidades de objetos de granularidade fina.
Seja um processador de requisições (Request Processor) cuja responsabilidade é receber uma requisição e processá-la sobre a camada de objetos de negócio (Product, Customer) do domínio (domain model). Um objeto Request é criado para representar a requisição, encapsulando sua lógica de execução. Assim, para cada requisição, o correspondente objeto Request deve ser criado para executá-la. Como não é necessário armazenar o histórico de execução das requisições, é possível ter todos os objetos Request sem estado intrínseco específico da requisição, e compartilhar objetos Request entre requisições do mesmo tipo, diminuindo o overhead de criação e gerenciamento destes objetos, que podem ser muitos. Para tal, valores específicos da requisição precisam ser modelados como estado extrínseco do objeto Request, sendo passados como parâmetros. A classe RequestFactory contém um pool de gerenciamento de objetos Request. Esses objetos são criados sob demanda no primeiro acesso.
Declara uma interface através da qual flyweights podem receber e atuar sobre estados extrínsecos.
Implementa a interface de Flyweight e acrescenta armazenamento para estados intrínsecos, se houver.
Cria e gerencia objetos flyweights e garante que eles sejam compartilhados apropriadamente.
Mantém referências para os flyweights, neste caso, referências transientes durante o processamento das requisições.
CommerceFlyweight
org.eclipse.jdt.core.javabuilder
org.eclipse.jdt.core.javanature
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.release=enabled
org.eclipse.jdt.core.compiler.source=11
Êþº¾ 7 1 (br/uff/commerce/domain/customer/Customer java/lang/Object id J name Ljava/lang/String; (JLjava/lang/String;)V Code
()V
setName (Ljava/lang/String;)V LineNumberTable LocalVariableTable this *Lbr/uff/commerce/domain/customer/Customer; getId ()J getName ()Ljava/lang/String;
" ! java/lang/String # trim
% &