Factory Method

Summary

a Factory Method creates new objects as instructed by the client. Uma maneira de criar objetos em JavaScript é invocando uma função de construtor com o novo operador. No entanto, existem situações em que o cliente não sabe, ou não deve saber, qual dos vários objetos candidatos a instanciar. O método de fábrica permite ao cliente delegar a criação de objetos, mantendo o controle sobre qual tipo de instanciar.

O principal objetivo do método de fábrica é a extensibilidade. Métodos de fábrica são frequentemente usados em aplicações que gerenciam, mantêm ou manipulam coleções de objetos diferentes, mas ao mesmo tempo têm muitas características (ou seja, métodos e propriedades) em comum. Um exemplo seria uma coleção de documentos com uma mistura de documentos Xml, documentos Pdf e documentos Rtf.

Diagrama

Diagrama de JavaScript Método de Fábrica Padrão de Design

os Participantes

Os objectos que participam deste modelo são:

  • Criador — No exemplo de código: Fábrica
    • a ‘fábrica’ de objeto que cria novos produtos
    • implementa ‘factoryMethod”, que retorna recém-criada produtos
  • AbstractProduct — não utilizadas em JavaScript
    • declara uma interface para produtos
  • ConcreteProduct — No código de exemplo: Empregados
    • o produto que está sendo criado.
    • todos os produtos suportam a mesma interface (propriedades e métodos)

Exemplo de código em JavaScript

neste exemplo de JavaScript o objeto de Fábrica cria quatro diferentes tipos de funcionários. Cada tipo de empregado tem uma taxa horária diferente. O método createemprego é o método de fábrica real. O cliente instrui a fábrica que tipo de empregado criar passando um argumento de tipo para o método de fábrica.

O produto abstrato no diagrama não é implementado porque Javascript não suporta classes abstratas ou interfaces. No entanto, ainda precisamos garantir que todos os tipos de funcionários têm a mesma interface (propriedades e métodos).

quatro tipos diferentes de empregados são criados; todos são armazenados na mesma matriz. Cada funcionário é convidado a dizer o que eles são e sua taxa horária.

a função log é um auxiliar que recolhe e mostra resultados.

function Factory() { this.createEmployee = function (type) { var employee; if (type === "fulltime") { employee = new FullTime(); } else if (type === "parttime") { employee = new PartTime(); } else if (type === "temporary") { employee = new Temporary(); } else if (type === "contractor") { employee = new Contractor(); } employee.type = type; employee.say = function () { log.add(this.type + ": rate " + this.hourly + "/hour"); } return employee; }}var FullTime = function () { this.hourly = "$12";};var PartTime = function () { this.hourly = "$11";};var Temporary = function () { this.hourly = "$10";};var Contractor = function () { this.hourly = "$15";};// log helpervar log = (function () { var log = ""; return { add: function (msg) { log += msg + "\n"; }, show: function () { alert(log); log = ""; } }})();function run() { var employees = ; var factory = new Factory(); employees.push(factory.createEmployee("fulltime")); employees.push(factory.createEmployee("parttime")); employees.push(factory.createEmployee("temporary")); employees.push(factory.createEmployee("contractor")); for (var i = 0, len = employees.length; i Run 

Deixe uma resposta

O seu endereço de email não será publicado.