zoukankan      html  css  js  c++  java
  • 设计模式(二) 模板方法

    模板方法模式——在一个抽象类中定义一个操作中的算法骨架,而将一些步骤延迟到子类中去实现(对应于我们根据自己的情况向模板填充内容)。模板方法使得子类可以不改变一个算法的结构前提下,重新定义算法的某些特定步骤,模板方法模式把不变行为搬到超类中,从而去除了子类中的重复代码。

    优点: 1、封装不变部分,扩展可变部分。 2、提取公共代码,便于维护。 3、行为由父类控制,子类实现。

     1  /// <summary>
     2  /// 炒菜基类
     3  /// </summary>
     4 public abstract class CookAbstract
     5 {
     6         /// <summary>
     7         /// 模板方法
     8         /// </summary>
     9         public void Cook()
    10         {
    11             AddOil();
    12             AddVegetables();
    13             AddSalt();
    14         }
    15 
    16         /// <summary>
    17         /// 加油
    18         /// </summary>
    19         public virtual void AddOil()
    20         {
    21             Console.WriteLine("加油");
    22         }
    23         /// <summary>
    24         /// 加蔬菜
    25         /// </summary>
    26         public abstract void AddVegetables();
    27         /// <summary>
    28         /// 加盐
    29         /// </summary>
    30         public virtual void AddSalt()
    31         {
    32             Console.WriteLine("加盐");
    33         }
    34 }
    炒菜基类
     1  /// <summary>
     2  /// 炒土豆
     3  /// </summary>
     4 public class CookPotato : CookAbstract
     5 {
     6         public override void AddVegetables()
     7         {
     8             Console.WriteLine("加土豆");
     9         }
    10 }
    11  /// <summary>
    12  /// 炒白菜
    13  /// </summary>
    14 public class CookCabbage : CookAbstract
    15 {
    16         public override void AddOil()
    17         {
    18             Console.WriteLine("加花生油");
    19         }
    20         public override void AddVegetables()
    21         {
    22             Console.WriteLine("加白菜");
    23         }
    24 }
    炒菜子类
    1  CookAbstract potato = new CookPotato();
    2  CookAbstract cabbage = new CookCabbage();
    3 
    4   potato.Cook();
    5   Console.WriteLine();
    6   cabbage.Cook();
    客户端调用

    结果:

  • 相关阅读:
    配置Tomcat 输入ip直接访问自己的页面
    为什么hashMap的容量是2的幂次
    LinkedList源码详解
    以太网和Zigbee的家居信息采集系统
    无线LED智能照明控制系统
    ZigBee无线应变采集装置
    ZigBee红外远程监控系统设计
    ZigBee教室照明监控系统设计
    基于物联网的智能医护系统研究
    物联网的低成本乳品质量链追溯平台设计
  • 原文地址:https://www.cnblogs.com/jasonbourne3/p/11096051.html
Copyright © 2011-2022 走看看