SharedMutability is pureevilAvoid it, bro!
CacheObjetos em cache ajudam muito a vida daaplicação- Existem dois tipos de objetos em cache:- Único da sessão- Usuário, ...
CacheEstados de um objeto precisam ser alteradosna maioria das aplicações.- Único da sessão- Pode mudar que não dá xabú- D...
Objetos imutáveisJá dizia o Java effective "Promova aimutabilidade"- Objetos imutáveis são seguros- Objetos imutáveis não ...
Objetos imutáveisCriar objetos imutáveis é de certa formasimples (ou não)public class UsuarioImutavel {private final Strin...
Objetos imutáveisPossíveis FalhasPossíveis Soluçõespublic void exemplo2(UsuarioImutavel usuarioImutavel) {Calendar data = ...
Objetos imutáveisObjetos imutáveis são seguros, porém tem umproblema críticoELES SÃO IMUTÁVEIS!
Mutabilidade compartilhada- E se eu precisar mudar o estado de um objetodivido entre sessões?- Alteração em uma requisição...
Possíveis soluçõesHíbridoCriar uma classe imutável com atributosmutáveis- Atributo mutável continua compartilhado!Clonar o...
Possíveis soluçõesBag of things- Criar um objeto auxiliar que sempreacompanha o objeto imutável- Objeto tem todos os atrib...
Possíveis soluçõesWrapperSolução chique baseada no pattern Decorator(um pouco modificado).- Proposta parecida com os Wrapp...
Qual è latuasoluzione?Mache!!
Upcoming SlideShare
Loading in...5
×

Shared mutability

55

Published on

Apresentação sobre Shared Mutability
Apresentada dia 17/04

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
55
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Shared mutability

  1. 1. SharedMutability is pureevilAvoid it, bro!
  2. 2. CacheObjetos em cache ajudam muito a vida daaplicação- Existem dois tipos de objetos em cache:- Único da sessão- Usuário, Relatório, Source- Divididos entre sessões- Campanha, oferta, produto
  3. 3. CacheEstados de um objeto precisam ser alteradosna maioria das aplicações.- Único da sessão- Pode mudar que não dá xabú- Dividido entre sessões- Alteração no estado em uma sessãoinfluência outra sessão, causando erros lógicos
  4. 4. Objetos imutáveisJá dizia o Java effective "Promova aimutabilidade"- Objetos imutáveis são seguros- Objetos imutáveis não tem estados obsoletos- Objetos imutáveis são thread safe- Objetos imutáveis são atômicos
  5. 5. Objetos imutáveisCriar objetos imutáveis é de certa formasimples (ou não)public class UsuarioImutavel {private final String nome;private final Integer id;private final Calendar nascimento;private final Endereco endereco;public UsuarioImutavel(String nome, Integer id, Calendar nascimento, Endereco endereco) {this.nome = nome; this.id = id;this.nascimento = nascimento; this.endereco = endereco;}public Integer getId() { return id; }public String getNome() { return nome; }public Calendar getNascimento() { return nascimento; }public Endereco getEndereco() { return endereco; }
  6. 6. Objetos imutáveisPossíveis FalhasPossíveis Soluçõespublic void exemplo2(UsuarioImutavel usuarioImutavel) {Calendar data = usuarioImutavel.getNascimento();data.add(Calendar.YEAR, 2);System.out.println(data.getTime());}public void exemplo1(UsuarioImutavel usuarioImutavel) {Endereco endereco = usuarioImutavel.getEndereco();endereco.setCEP("12345-678");}public Calendar getNascimento() {Calendar cloneCal = Calendar.getInstance();cloneCal.setTime(nascimento.getTime());return cloneCal;}Fazer classe Endereco imutável
  7. 7. Objetos imutáveisObjetos imutáveis são seguros, porém tem umproblema críticoELES SÃO IMUTÁVEIS!
  8. 8. Mutabilidade compartilhada- E se eu precisar mudar o estado de um objetodivido entre sessões?- Alteração em uma requisição muda ocomportamento de outra- Concurrent Exception- Comportamento imprevisível
  9. 9. Possíveis soluçõesHíbridoCriar uma classe imutável com atributosmutáveis- Atributo mutável continua compartilhado!Clonar objeto na saída do cache- Atributos imutáveis são os mesmos mas osmutáveis são únicos para a sessão!Adserver Approved!
  10. 10. Possíveis soluçõesBag of things- Criar um objeto auxiliar que sempreacompanha o objeto imutável- Objeto tem todos os atributos mutáveisnecessáriosCacheBag of things
  11. 11. Possíveis soluçõesWrapperSolução chique baseada no pattern Decorator(um pouco modificado).- Proposta parecida com os Wrappers Javapadrão public class WrapperOferta {private final Oferta oferta;private String precoFormatado;public Oferta getOfertaImutavel() { return oferta; }public void mudaPreco(String novoPreco) { this.precoFormatado = novoPreco; }public String getPreco() { return precoFormatado; }}
  12. 12. Qual è latuasoluzione?Mache!!
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×