Factory

Programming/Design Patterns 2007. 2. 21. 11:07
 1 class SimplePizzaFactory{
2         public function createPizza(type:String):Pizza{
3                 var pizza:Pizza = null;
4                 if(type == "cheese"){
5                         pizza = new CheesePizza();
6                 }else if(type == "pepperoni"){
7                         pizza = new PepperoniPizza();
8                 }else if(type == "clam"){
9                         pizza = new ClamPizza();
10                 }else if(type == "veggie"){
11                         pizza = new VeggiePizza();
12                 }
13                 return pizza;
14         }
15 }

////////////////////////////////////////

 1 class CheesePizza extends Pizza{
2         public function CheesePizza(){
3                 pizza_name = "CheesePizza";
4                 dough = "얇게";
5                 sauce = "짜게";
6         }
7
8         private function bake(){
9                 trace("Bake for 25 minutes at 350");
10         }
11         private function cut(){
12                 trace("Cutting the pizza into diagonal slices");
13         }
14         private function box(){
15                 trace("Place pizza in official PizzaStore box");
16         }
17         public function getName():String{
18                 return pizza_name;
19         }
20 }

/////////////////////////////////

 1 class VeggiePizza extends Pizza{
2         public function VeggiePizza(){
3                 pizza_name = "VeggiePizza";
4                 dough = "굵게";
5                 sauce = "달게";
6         }
7
8         private function bake(){
9                 trace("Bake for 25 minutes at 350");
10         }
11         private function cut(){
12                 trace("Cutting the pizza into diagonal slices");
13         }
14         private function box(){
15                 trace("Place pizza in official PizzaStore box");
16         }
17         public function getName():String{
18                 return pizza_name;
19         }
20 }

/////////////////////////////////////////////

 1 class ClamPizza extends Pizza{
2         public function ClamPizza(){
3                 pizza_name = "ClamPizza";
4                 dough = "굵게";
5                 sauce = "달게";
6         }
7
8         private function bake(){
9                 trace("Bake for 25 minutes at 350");
10         }
11         private function cut(){
12                 trace("Cutting the pizza into diagonal slices");
13         }
14         private function box(){
15                 trace("Place pizza in official PizzaStore box");
16         }
17         public function getName():String{
18                 return pizza_name;
19         }
20 }

//////////////////////////////////////

 1 class PepperoniPizza extends Pizza{
2         public function PepperoniPizza(){
3                 pizza_name = "PepperoniPizza";
4                 dough = "굵게";
5                 sauce = "달게";
6         }
7
8         private function bake(){
9                 trace("Bake for 25 minutes at 350");
10         }
11         private function cut(){
12                 trace("Cutting the pizza into diagonal slices");
13         }
14         private function box(){
15                 trace("Place pizza in official PizzaStore box");
16         }
17         public function getName():String{
18                 return pizza_name;
19         }
20 }

/////////////////////////////////////////

 1 class Pizza{
2         private var pizza_name:String;
3         private var dough:String;
4         private var sauce:String;
5         private var ary:Array = new Array();
6
7         public function prepare(){
8                 trace("피자이름 : "+pizza_name);
9
10         }
11         public function bake(){
12                 trace("Bake for 25 minutes at 350");
13         }
14         public function cut(){
15                 trace("Cutting the pizza into diagonal slices");
16         }
17         public function box(){
18                 trace("Place pizza in official PizzaStore box");
19         }
20         public function getName():String{
21                 return pizza_name;
22         }
23
24 }

///////////////////////////////////////

 1 class PizzaStore{
2         private var factory:SimplePizzaFactory;
3         public function PizzaStore(factory:SimplePizzaFactory){
4                 this.factory = factory;
5         }
6         public function orderPizza(type:String):Pizza{
7                 var pizza:Pizza; 8 pizza = factory.createPizza(type);
9                 pizza.prepare();
10                 // pizza.bake();
11                 // pizza.cut();
12                 // pizza.box();
13                 return pizza;
14         }
15 }

////////////////////////////////////////
var myPizzaStore:PizzaStore = new PizzaStore(new SimplePizzaFactory());
myPizzaStore.orderPizza("cheese");
myPizzaStore.orderPizza("pepperoni");
myPizzaStore.orderPizza("clam");
myPizzaStore.orderPizza("veggie");


    

설정

트랙백

댓글