Garantir que uma classe tenha somente uma instância e fornecer um ponto global de acesso para a mesma.
Deseja-se implementar uma engine (biblioteca) para criar jogos de batalhas espaciais utilizando o conceito de Universo, que deve ser único por definição. Assim, a engine deve garantir que um único exemplar de Universo seja criado em um jogo. A classe Universe age como um Singleton. Essa classe não tem um construtor público, então a única maneira de obter seu objeto é chamando o método estático getSoleInstance. Esse método coloca o primeiro objeto criado em cache e o retorna em todas as chamadas subsequentes.
Singleton(Universe):
Define uma operação getSoleInstance que permite aos clientes acessarem sua única instância.
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 se 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 gerencimento 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. As classes dos objetos Request (EditProductRequest, EditCustomerRequest) garantem que esses objetos sejam compartilhados e únicos, viabilizando o reúso. Esses objetos são criados sob demanda no primeiro acesso.
Singleton(RequestProcessor, RequestFactory, EditProductRequest, EditCustomerRequest):
Define uma operação getSoleInstance que permite aos clientes acessarem sua única instância.
CommerceSingleton
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
% &