zoukankan      html  css  js  c++  java
  • 设计模式学习笔记之 装饰者模式

    代码:

    Code
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace DecoratePattern
    {
    class Program
    {
    static void Main(string[] args)
    {
    Console.Write(
    "顾客:来一盘饺子\r\n");
    Console.Read(); Console.Read();

    Dumpling dumpling
    = new Dumpling();
    Console.Write(
    "服务生:"+dumpling.Describe()+" "+dumpling.Cast().ToString()+"元人民币\r\n");
    Console.Read(); Console.Read();

    Console.Write(
    "顾客:等等,再给我拿点醋\r\n");
    Console.Read(); Console.Read();

    Vinegar vingarDumpling
    = new Vinegar(dumpling);//用“醋”修饰饺子
    Console.Write("服务生:" + vingarDumpling.Describe() + " " + vingarDumpling.Cast().ToString() + "元人民币\r\n");
    Console.Read(); Console.Read();

    Console.Write(
    "顾客:什么,太黑了,醋也要钱,那酱油我也要点\r\n");
    Console.Read(); Console.Read();

    Soy soyVingarDumpling
    = new Soy(vingarDumpling);//用“酱油”修饰那盘加了醋的饺子
    Console.Write("服务生:" + soyVingarDumpling.Describe() + " " + soyVingarDumpling.Cast().ToString() + "元人民币\r\n");
    Console.Read(); Console.Read();

    Console.Write(
    "顾客:啊,酱油不是和醋算在一起的?\r\n");
    Console.Read(); Console.Read();
    Console.Write(
    "----------顾客吃光了饺子----------\r\n");
    Console.Read(); Console.Read();

    Console.Write(
    "顾客:也太少了点,再来一盘馄饨吧,还有加醋和酱油\r\n");
    Console.Read(); Console.Read();

    Soy soyVingarWonton
    =new Soy(new Vinegar(new Wonton()));
    Console.Write(
    "服务生:" + soyVingarWonton.Describe() + " " + soyVingarWonton.Cast().ToString() + "元人民币\r\n");
    Console.Read(); Console.Read();

    Console.Write(
    "顾客:cow,再也不来这里吃饭了\r\n");
    Console.Read(); Console.Read();


    }
    }

    /// <summary>
    /// 食物超类
    /// </summary>
    abstract class Food
    {
    abstract public string Describe();
    abstract public double Cast();

    }


    /// <summary>
    /// 被修饰者一:馄饨
    /// </summary>
    class Wonton : Food
    {
    public override Double Cast()
    {
    return 10;
    }

    public override string Describe()
    {
    return "馄饨";
    }
    }

    /// <summary>
    /// 被修饰者二:饺子
    /// </summary>
    class Dumpling : Food
    {
    public override Double Cast()
    {
    return 12;
    }

    public override string Describe()
    {
    return "饺子";
    }
    }

    class Vinegar : Food
    {
    private Food _Food;

    public Vinegar(Food Food)
    {
    this._Food = Food;
    }
    public override string Describe()
    {
    return "加醋" + this._Food.Describe();
    }

    public override double Cast()
    {
    return 2 + this._Food.Cast();
    }
    }

    class Soy : Food
    {
    private Food _Food;

    public Soy(Food Food)
    {
    this._Food = Food;
    }
    public override string Describe()
    {
    return "加酱油" + this._Food.Describe();
    }

    public override double Cast()
    {
    return 3 + this._Food.Cast();
    }

    }

    }

    运行结果:

  • 相关阅读:
    Web持久化存储Web SQL、Local Storage、Cookies(常用)
    浅谈TypeScript
    浅谈JavaScript、ES5、ES6
    AngularJS1.3一些技巧
    AngularJS学习总结
    poj-----Ultra-QuickSort(离散化+树状数组)
    HDUOJ---1241Oil Deposits(dfs)
    HDUOJ---携程员工运动会场地问题
    HDUOJ------2398Savings Account
    HDUOJ-----2399GPA
  • 原文地址:https://www.cnblogs.com/zzy0471/p/1324762.html
Copyright © 2011-2022 走看看