Mudanças entre as edições de "Design patterns em linguagens dinâmicas"

De Garoa Hacker Clube
Ir para navegação Ir para pesquisar
Linha 135: Linha 135:
 
=== Grafo de relação entre padrões ===
 
=== Grafo de relação entre padrões ===
   
[[Arquivo:RelacaoEntreDesignPatterns.png]]
+
[[Arquivo:RelacaoEntreDesignPatterns.png|thumb|left|800px]]
   
 
== Referências ==
 
== Referências ==

Edição das 07h07min de 18 de abril de 2013

Proposta

Grupo de estudos e discussão presencial no Garoa Hacker Clube para rever padrões de projeto e sua aplicabilidade e variações em linguagens dinâmicas (Python, Ruby, JavaScript etc.).

Contexto

O livro Design Patterns de Gamma et. al., documenta 23 padrões de projeto. A maioria dos exemplos de código são em C++ e há alguns em Smalltalk.

Em 1996, Peter Norvig fez uma apresentação Design Patterns in Dynamic Languages

Nesta apresentação o slide 10 tem o seguinte conteúdo:

Design Patterns in Dylan or Lisp

16 of 23 patterns are either invisible or simpler, due to:

  • First-class types (6): Abstract-Factory, Flyweight, Factory-Method, State, Proxy, Chain-Of-Responsibility
  • First-class functions (4): Command, Strategy, Template-Method, Visitor
  • Macros (2): Interpreter, Iterator
  • Method Combination (2): Mediator, Observer
  • Multimethods (1): Builder
  • Modules (1): Facade

Proposta detalhada

Considerando que linguagens dinâmicas modernas como Python, Ruby e JavaScript emprestam várias das características dinâmicas de Lisp mencionadas por Norvig, a idéia é rever um subconjunto dos design patterns originais avaliando sua utilidade e alternativas de implementação em uma ou mais dessas linguagens.

  • Para cada encontro, escolher 2 padrões para estudo e discussão:
    • um dos 16 da lista do Norvig (acima)
    • um dos 7 restantes, que não aparecem nesta lista porque devem ser aplicáveis também em linguagens dinâmicas na forma descrita no livro Design Patterns.
  • Apresentar código exemplo nas linguagens dinâmicas de preferência dos participantes

Pares de padrões relacionados

  • Memento e Visitor
  • Proxy e Decorator
  • Prototype, Singleton e Borg

Cronograma

Reuniões em 2 quartas-feiras por mês (a cada 2 ou 3 semanas), começando sempre às 19:30.

Datas:

  • 3/04 - Iterator e Generator, GRASP, exemplo de Template Method
  • 17/04 - Memento e Visitor
  • 8/05 - Composite e Flyweight
  • 22/05
  • 5/06
  • 19/06

Padrões

Legenda
# número do padrão no livro de Gamma et.al.
type família do padrão
HF analisado no livro Head First Design Patterns (+++: três análises)
R número de citações como padrão relacionado (v. related patterns)
name nome do padrão
PN analisado nos slides de Peter Norvig
feature característica de linguagens dinâmicas que afeta este padrão
related patterns padrões relacionados a este no livro de Gamma et.al.


# type HF R name PN feature related patterns
1 Creational + 6 Abstract Factory + First class types Factory Method, Prototype, Singleton
2 Creational 1 Builder + Multimethods Abstract Factory, Composite
3 Creational + 3 Factory Method First class types Abstract Factory, Template Method, Prototypes
4 Creational 3 Prototype Abstract Factory, Composite, Decorator
5 Creational + 4 Singleton + Abstract Factory, Builder, Prototype
6 Structural + 3 Adapter Bridge, Decorator, Proxy
7 Structural 1 Bridge Abstract Factory, Adapter
8 Structural + 9 Composite Chain of Responsibility, Decorator, Flyweight, Iterator, Visitor
9 Structural + 4 Decorator Adapter, Composite, Strategy
10 Structural + 1 Facade + Modules Abstract Factory, Mediator, Singleton
11 Structural 4 Flyweight First class types Composite, State, Strategy
12 Structural +++ 1 Proxy First class types Adapter, Decorator
13 Behavioral 1 Chain of Responsibility First class types Composite
14 Behavioral + 1 Command First class functions Composite, Memento, Prototype
15 Behavioral 1 Interpreter + Macros Composite, Flyweight, Iterator, Visitor
16 Behavioral + 3 Iterator + Macros Composite, Factory Method, Memento
17 Behavioral 2 Mediator Method Combination Facade, Observer
18 Behavioral 2 Memento Command, Iterator
19 Behavioral + 1 Observer + Method Combination Mediator, Singleton
20 Behavioral + 1 State First class types Flyweight, Singleton
21 Behavioral + 3 Strategy + First class functions Flyweight
22 Behavioral + 1 Template Method First class functions Factory Method, Strategy
23 Behavioral 2 Visitor First class functions Composite, Interpreter

Grafo de relação entre padrões

RelacaoEntreDesignPatterns.png

Referências

Inscrições

Para se inscrever, coloque seu nome aqui (é preciso criar uma conta no wiki para editar a página)

Mais informações

Dúvidas, comentários e sugestões: inscreva-se e mande sua mensagem para o grupo de discussão do Garoa Hacker Clube em https://groups.google.com/group/hackerspacesp . Coloque Design Patterns no assunto.