风动破

导航

设计模式之模板Template

 

模板方法模式中涉及了两个角色:

 

  • 抽象模板角色(Vegetable扮演这个角色):定义了一个或多个抽象操作,以便让子类实现,这些抽象操作称为基本操作。
  • 具体模板角色(ChineseCabbage和Spinach扮演这个角色):实现父类所定义的一个或多个抽象方法。
优点:
  1. 实现了代码复用
  2. 能够灵活应对子步骤的变化,符合开放-封闭原则

缺点:因为引入了一个抽象类,如果具体实现过多的话,需要用户或开发人员需要花更多的时间去理清类之间的关系。

======================================

public class TemplateMode
    {
        public TemplateMode() 
        {
            Vegetable teget = new Vegetable();
            ITemplate template = new Meat();
        }
    }
    public abstract class ITemplate 
    {
        public ITemplate() 
        {
            pouroil();
            fire();
            pourfood();
            stirfry();
        }
        private void pouroil() { Console.WriteLine("倒油"); }
        private void fire() { Console.WriteLine("点火"); }
        public abstract void pourfood();
        private void stirfry() { Console.WriteLine("翻炒"); }
    }
    public class Vegetable : ITemplate
    {
        public override void pourfood()
        {
            Console.WriteLine("放菜");
        }
    }
    public class Meat : ITemplate
    {
        public override void pourfood()
        {
            Console.WriteLine("放肉");
        }
    }

 

posted on 2015-04-30 17:29  风动破  阅读(103)  评论(0)    收藏  举报