• 桥接模式(Bridge)


      1 /*
      2  * 一个咖啡店可以提供大杯(JorumCoffee)、中杯(MediumCoffee)、小杯(SmallCoffee)的咖
      3  * 啡(Coffee),为了满足不同用户的口味,在咖啡中可以添加牛奶(Milk),或者糖(Sugar),
      4  * 或者柠檬(Lemon),提供给用户不同口味的组合,如大杯咖啡加牛奶,中杯咖啡加糖,小
      5  * 杯咖啡加柠檬,小杯咖啡加糖等。应用桥接模式,用C#控制台应用程序实现该设计。
      6  */
      7 using System;
      8 using System.Collections.Generic;
      9 using System.Linq;
     10 using System.Text;
     11 
     12 namespace Bridge
     13 {
     14     abstract class Taste
     15     {
     16         public abstract string Add();
     17     }
     18     class Milk : Taste
     19     {
     20         public override string Add()
     21         {
     22             return "牛奶";
     23         }
     24     }
     25     class Suger : Taste
     26     {
     27         public override string Add()
     28         {
     29             return "";
     30         }
     31     }
     32     class Lemon : Taste
     33     {
     34         public override string Add()
     35         {
     36             return "柠檬";
     37         }
     38     }
     39 
     40     class Coffee
     41     {
     42         protected Taste taste;
     43         public void SetTaste(Taste taste)
     44         {
     45             this.taste = taste;
     46         }
     47         public virtual void Add()
     48         {
     49             Console.WriteLine("向咖啡中添加了" + taste.Add() + "");
     50         }
     51     }
     52     class JorumCoffee : Coffee
     53     {
     54         public JorumCoffee()
     55         {
     56             Console.WriteLine("买了一大杯咖啡。");
     57         }
     58         public override void Add()
     59         {
     60             Console.WriteLine("向大杯咖啡中添加了" + taste.Add() + "");
     61         }
     62     }
     63     class MediumCoffee : Coffee
     64     {
     65         public MediumCoffee()
     66         {
     67             Console.WriteLine("买了一中杯咖啡。");
     68         }
     69         public override void Add()
     70         {
     71             Console.WriteLine("向中杯咖啡中添加了" + taste.Add() + "");
     72         }
     73     }
     74     class SmallCoffee : Coffee
     75     {
     76         public SmallCoffee()
     77         {
     78             Console.WriteLine("买了一小杯咖啡。");
     79         }
     80         public override void Add()
     81         {
     82             Console.WriteLine("向小杯咖啡中添加了" + taste.Add() + "");
     83         }
     84     }
     85 
     86     class Program
     87     {
     88         static void Main(string[] args)
     89         {
     90             Milk milk = new Milk();
     91             Suger suger = new Suger();
     92             Lemon lemon = new Lemon();
     93 
     94             Coffee jc = new JorumCoffee();
     95             jc.SetTaste(milk);
     96             jc.Add();
     97 
     98             Coffee mc = new MediumCoffee();
     99             mc.SetTaste(suger);
    100             mc.Add();
    101 
    102             Coffee sc = new SmallCoffee();
    103             sc.SetTaste(lemon);
    104             sc.Add();
    105         }
    106     }
    107 }
    字节跳动内推

    找我内推: 字节跳动各种岗位
    作者: ZH奶酪(张贺)
    邮箱: cheesezh@qq.com
    出处: http://www.cnblogs.com/CheeseZH/
    * 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    计数和查找
    遍历
    top小火箭
    leetcode 字符串中的第一个唯一字符
    leetcode 颠倒整数
    leetcode 反转字符串
    leetcode 有效的数独
    leetcode 两数之和
    leetcode 移动零
    leetcode 加一
  • 原文地址:https://www.cnblogs.com/CheeseZH/p/2505569.html
Copyright © 2020-2023  润新知