• 简单工厂之简单模型(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;

    }

    }

    }

    }

  • 相关阅读:
    css选择器优先级
    内置函数filter和map
    hdu 3068 最长回文 manacher算法(视频)
    hdu 5752 Sqrt Bo
    HDU 2176 取(m堆)石子游戏(Nim)
    HDU 2188 悼念512汶川大地震遇难同胞――选拔志愿者(巴什博奕)
    HDU 2897 邂逅明下(巴什博奕)
    POJ 1740 A New Stone Game(普通博弈)
    HDU 2516 取石子游戏(斐波那契博弈)
    hdu 1361 Parencodings 简单模拟
  • 原文地址:https://www.cnblogs.com/beeone/p/2009845.html
Copyright © 2020-2023  润新知