zoukankan      html  css  js  c++  java
  • 简单工厂之简单模型(uml)

    简单工厂之简单模型(uml)

    《java与模式》上面那本书上的例子举的是园丁和果园的例子,学习设计模式最好在生活中自己找个例子,实践一下,下面是别人的一个例子(具体是谁我不知道),是讲快餐店的例子,快餐店提供很多食物,比如面条,米饭,面包。首先定义了一个Food接口,然后这些食物都从它来继承,定义了一个大厨他包办所有食物的制作工作,这就是我所理解的简单工厂模式的概念,下面是uml图:
    o_uml.JPG
    下面是程序:
    using System;



    namespace SimpleFactory

    {

    class Class1

    {

    [STAThread]

    static void Main(string[] args)

    {

    食物 food
    =大厨师.要做的食物("面条");

    food.做食物();

    food.卖食物();

    Console.ReadLine();

    }

    }

    ///

    /// 定义食物接口

    ///

    public interface 食物

    {

    void 做食物();

    void 卖食物();

    }

    ///

    /// 抛出大厨师不能做的食物

    ///

    public class BadFoodException : System.Exception

    {

    public BadFoodException(string str)

    {

    System.Console.WriteLine(str);

    }

    }

    ///

    /// 面条

    ///

    public class 面条 : 食物

    {

    public 面条()

    {

    System.Console.WriteLine(
    "这是面条");

    }

    public void 做食物()

    {

    System.Console.WriteLine(
    "现在煮面条");

    }

    public void 卖食物()

    {

    System.Console.WriteLine(
    "现在卖面条");

    }

    }

    ///

    /// 面包

    ///

    public class 面包 : 食物

    {

    public 面包()

    {

    System.Console.WriteLine(
    "这是面包");

    }

    public void 做食物()

    {

    System.Console.WriteLine(
    "现在做面包");

    }

    public void 卖食物()

    {

    System.Console.WriteLine(
    "现在卖米饭");

    }

    }

    ///

    /// 米饭

    ///

    public class 米饭 : 食物

    {

    public 米饭()

    {

    System.Console.WriteLine(
    "这是米饭");

    }

    public void 做食物()

    {

    System.Console.WriteLine(
    "现在煮米饭");

    }

    public void 卖食物()

    {

    System.Console.WriteLine(
    "现在卖米饭");

    }

    }

    ///

    /// 大厨师

    ///

    public class 大厨师

    {

    public static 食物要做的食物(string food)

    {

    try

    {

    switch(food)

    {

    case "面包":

    return new 面包();

    case "米饭":

    return new 米饭();

    case "面条":

    return new 面条();

    default:

    throw new BadFoodException("没有这种食物");

    }

    }

    catch(BadFoodException e)

    {

    throw e;

    }

    }

    }

    }

  • 相关阅读:
    java提高篇(二四)-----HashSet
    链表(线性表)
    逆置线性表(线性表)
    Android布局_表格布局TableLayout
    Android布局_布局概述和LinearLayout布局
    Android_用户界面概述和数据单位
    Android_SDK的常用命令
    Android_程序结构分析
    CSS3_边框属性之圆角的基本图形案例
    CSS3_边框属性之圆角
  • 原文地址:https://www.cnblogs.com/beeone/p/2009845.html
Copyright © 2011-2022 走看看