팩토리 메서드 패턴
위키백과, 우리 모두의 백과사전.
팩토리 메서드 패턴(Factory method pattern)은 객체지향 디자인 패턴이다. 다른 생성 패턴들처럼, 이 패턴도 생성하려는 객체의 클래스를 정확히 지정하지 않으면서 객체를 만드는 문제를 다룬다. 팩토리 메서드 패턴은 이 문제를 객체를 만드는 또 다른 메서드를 정의하여 처리한다. 일반적으로, 팩토리 메서드라는 용어는 객체를 만드는 것이 주 목적인 메서드를 지칭하는데 주로 사용한다.
목차[숨기기] |
[편집]예
[편집]C#
Pizza example:
public abstract class Pizza { public abstract decimal GetPrice(); public enum PizzaType { HamMushroom, Deluxe, Seafood } public static Pizza PizzaFactory(PizzaType pizzaType) { switch (pizzaType) { case PizzaType.HamMushroom: return new HamAndMushroomPizza(); case PizzaType.Deluxe: return new DeluxePizza(); case PizzaType.Seafood: return new SeafoodPizza(); } throw new System.NotSupportedException("The pizza type " + pizzaType.ToString() + " is not recognized."); } } public class HamAndMushroomPizza : Pizza { private decimal price = 8.5M; public override decimal GetPrice() { return price; } } public class DeluxePizza : Pizza { private decimal price = 10.5M; public override decimal GetPrice() { return price; } } public class SeafoodPizza : Pizza { private decimal price = 11.5M; public override decimal GetPrice() { return price; } } // Somewhere in the code ... Console.WriteLine( Pizza.PizzaFactory(Pizza.PizzaType.Seafood).GetPrice().ToString("C2") ); // $11.50 ...
[편집]자바스크립트
Pizza example:
//Our pizzas function HamAndMushroomPizza(){ var price = 8.50; this.getPrice = function(){ return price; } } function DeluxePizza(){ var price = 10.50; this.getPrice = function(){ return price; } } function SeafoodPizza(){ var price = 11.50; this.getPrice = function(){ return price; } } //Pizza Factory function PizzaFactory(){ this.createPizza = function(type){ switch(type){ case "Ham and Mushroom": return new HamAndMushroomPizza(); case "DeluxePizza": return new DeluxePizza(); case "Seafood Pizza": return new SeafoodPizza(); default: return new DeluxePizza(); } } } //Usage var pizzaPrice = new PizzaFactory().createPizza("Ham and Mushroom").getPrice(); alert(pizzaPrice);
[편집]
출처 위키 피디아
'javascript' 카테고리의 다른 글
CSS 셀렉터 (0) | 2015.03.02 |
---|---|
[위키] 데코레이터 패턴 (0) | 2012.12.27 |
[Javascript] IOS WebView Ajax return page call init funtion issue (0) | 2012.09.19 |
JavaScript-Garden 한글 (0) | 2012.08.17 |
JSDT (Java script 코드 어시스트) (0) | 2012.08.17 |