zoukankan      html  css  js  c++  java
  • 设计模式之四:简单工厂(披萨店生产披萨模拟流程)

    简单工厂不是一个设计模式,只是一种变成习惯,常被误认为是“工厂模式”。(披萨店生产披萨模拟流程)

    工程名称:SimpleFactory  下载目录:http://www.cnblogs.com/jrsmith/admin/Files.aspx , SimpleFactory.zip

     1 package com.jyu.pizza;
     2 
     3 public abstract class Pizza {
     4 
     5     protected String name;
     6     
     7     public void prepare(){
     8         System.out.println(name+" is preparing...");
     9     }
    10     
    11     public void bake(){
    12         System.out.println(name+" is baking...");
    13     }
    14     
    15     public void cut(){
    16         System.out.println(name+" is cutting...");
    17     }
    18     
    19     public void box(){
    20         System.out.println(name+" is boxing...");
    21     }
    22     
    23 }
    View Code
     1 package com.jyu.pizza;
     2 
     3 
     4 /**
     5  * @author root
     6  *
     7  */
     8 public class CheesePizza extends Pizza {
     9     
    10     public CheesePizza(){
    11         name = "CheesePizza";
    12     }
    13 
    14 }
    View Code
    1 package com.jyu.pizza;
    2 
    3 public class ClamPizza extends Pizza {
    4 
    5     public ClamPizza() {
    6         name = "ClamPizza";
    7     }
    8 
    9 }
    View Code
    1 package com.jyu.pizza;
    2 
    3 public class PepperoniPizza extends Pizza {
    4 
    5     public PepperoniPizza() {
    6         name = "PepperoniPizza";
    7     }
    8 
    9 }
    View Code
    1 package com.jyu.pizza;
    2 
    3 public class VeggiePizza extends Pizza {
    4 
    5     public VeggiePizza() {
    6         name = "VeggiePizza";
    7     }
    8 
    9 }
     1 package com.jyu.store;
     2 
     3 import com.jyu.factory.SimplePizzaFactory;
     4 import com.jyu.pizza.Pizza;
     5 
     6 /**
     7  * 批萨店
     8  * @author root
     9  *
    10  */
    11 public class PizzaStore {
    12 
    13     SimplePizzaFactory factory;
    14     
    15     public PizzaStore(SimplePizzaFactory factory){
    16         this.factory = factory;
    17     }
    18     
    19     public Pizza orderPizza(String type){
    20         Pizza pizza;
    21         
    22         pizza = factory.createPizza(type);
    23         
    24         pizza.prepare();
    25         pizza.bake();
    26         pizza.cut();
    27         pizza.box();
    28         
    29         return pizza;
    30     }
    31 }
     1 package com.jyu.factory;
     2 
     3 import com.jyu.pizza.CheesePizza;
     4 import com.jyu.pizza.ClamPizza;
     5 import com.jyu.pizza.PepperoniPizza;
     6 import com.jyu.pizza.Pizza;
     7 import com.jyu.pizza.VeggiePizza;
     8 
     9 /**
    10  * 简单批萨工厂
    11  * @author root
    12  *
    13  */
    14 public class SimplePizzaFactory {
    15 
    16     public Pizza createPizza(String type){
    17         Pizza pizza = null;
    18         
    19         if(type.equals("cheese")){
    20             pizza = new CheesePizza();
    21         }else if(type.equals("pepperoni")){
    22             pizza = new PepperoniPizza();
    23         }else if(type.equals("clam")){
    24             pizza = new ClamPizza();
    25         }else if(type.equals("veggie")){
    26             pizza = new VeggiePizza();
    27         }
    28         return pizza;
    29     }
    30 }
     1 package com.jyu.test;
     2 
     3 import com.jyu.factory.SimplePizzaFactory;
     4 import com.jyu.store.PizzaStore;
     5 
     6 public class TestSimpleFactory {
     7 
     8     /**
     9      * @param args
    10      */
    11     public static void main(String[] args) {
    12         
    13         SimplePizzaFactory factory = new SimplePizzaFactory();
    14         
    15         PizzaStore pizzaStore = new PizzaStore(factory);
    16         
    17         pizzaStore.orderPizza("cheese");
    18     }
    19 
    20 }
  • 相关阅读:
    盘点 Oracle 11g 中新特性带来的10大性能影响
    史上最全Oracle数据泵常用命令
    Oracle查看 open_cursors 和 session_cached_cursors
    SLES 12: Database Startup Error with ORA-27300 ORA-27301 ORA-27303 While Starting using Srvctl (Doc ID 2340986.1)
    FAQ: Oracle Flex ASM 12c / 12.1 (Doc ID 1573137.1)
    Test Case:: 12C ASM New feature (Doc ID 1571975.1)
    Test Case:: 12C ASMCMD New feature (Doc ID 1589249.1)
    如何在Oracle 12C中Drop/Truncate多个分区 (Doc ID 1482264.1)
    如何在Oracle 12C中添加多个分区 (Doc ID 1482456.1)
    12c分区增强功能,新功能(文档ID 1568010.1)
  • 原文地址:https://www.cnblogs.com/damonhuang/p/2688978.html
Copyright © 2011-2022 走看看