Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Padrões de Projeto Facade em Linguagens Dinâm...

Padrões de Projeto Facade em Linguagens Dinâmicas

Padrões de projeto é um conceito muito importante em programação. Esta apresentação abordará conceitos de padrões de projeto e explorará o padrão façade no contexto de linguagens dinâmicas.

Marcel dos Santos

November 16, 2016
Tweet

More Decks by Marcel dos Santos

Other Decks in Technology

Transcript

  1. Learning OOP in PHP Tutoriais, vídeos, slides, livros sobre OOP,

    OOD, padrões de projetos, refatoração e arquitetura. bit.ly/Learning-OOP-in-PHP
  2. cada padrão de projeto sistematicamente nomeia, explica e avalia um

    aspecto importante e recorrente em sistemas orientado o objetos
  3. os padrões estruturais se preocupam com a forma como classes

    e objetos são compostos para formar estruturas maiores
  4. definir uma interface de nível mais alto que torna o

    subsistema mais fácil de ser usado
  5. a façade pode ter código próprio para poder traduzir a

    sua interface para as interfaces de subsistemas
  6. …reduzindo o número de objetos que os clientes têm que

    lidar e tornando o sub- sistema mais fácil de usar
  7. // Complex Parts interface BiosInterface { public function execute(); public

    function waitForKeyPress(); public function launch(OsInterface $os); public function powerDown(); } interface OsInterface { public function halt(); public function getName(): string; }
  8. // Facade class Facade { private $os; private $bios; public

    function __construct(BiosInterface $bios, OsInterface $os) { $this->bios = $bios; $this->os = $os; } public function turnOn() { $this->bios->execute(); $this->bios->waitForKeyPress(); $this->bios->launch($this->os); } public function turnOff() { $this->os->halt(); $this->bios->powerDown(); } }
  9. # Complex Parts class CPU def freeze; end def jump(position);

    end def execute; end end class Memory def load(position, data); end end class HardDrive def read(lba, size); end end
  10. # Facade class ComputerFacade def initialize @processor = CPU.new @ram

    = Memory.new @hd = HardDrive.new end def start @processor.freeze @ram.load(BOOT_ADDRESS, @hd.read(BOOT_SECTOR, SECTOR_SIZE)) @processor.jump(BOOT_ADDRESS) @processor.execute end end
  11. * Padrões de Projeto, GoF * https:/ /pt.wikipedia.org/wiki/Façade * https:/

    /github.com/domnikl/ DesignPatternsPHP * https:/ /garoa.net.br/wiki/ Design_patterns_em_linguagens_dinâ micas