Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 软件时空 > 软件相关 > 模版方法模式 - Template Method Pattern - 穷人和富人的不同婚恋历程
【标  题】:模版方法模式 - Template Method Pattern - 穷人和富人的不同婚恋历程
【关键字】:Template,Method,Pattern
【来  源】:http://www.cublog.cn/u/11165/showart.php?id=96975

模版方法模式 - Template Method Pattern - 穷人和富人的不同婚恋历程

Your Ad Here

不管是穷人还是富人,都要谈恋爱结婚,而且每个人的婚恋经历,步骤大体上都是一样的,比如说:见面、吃饭、游玩、婚礼、婚房   等等,这些步骤是社会已经给我们安排好了的,他就像一个大纲、一个模版,作为社会中的一个成员,不管是穷是富,都只能按照步骤去做,谁也不能改变这些步骤,但是每个步骤的具体内容暂时还是抽象的,怎么见面,怎么吃饭,怎么游玩,婚礼怎么办,婚房是什么样的,一千个人可能有一千个情况,比如你穷,和女朋友吃饭一碗面条也能打发;如果你富有,山珍海味也是吃饭。这就是为什么大家都恋爱结婚,却有人欢喜有人忧啊。

按照一个已经列好的大纲,根据自己具体的情况,实现其中的抽象步骤,这就是模版方法模式。

点击浏览更多的“说故事、学模式”系列

下面让我们来看看,用C#语言怎么描述穷人和富人的不同的婚恋历程,这是一个典型的模版方法模式。

TemplateMethod.cs

using System;
using System.Collections.Generic;
using System.Text;

namespace Template
{
    
//***************************************************************

    
//客户端
    class Client
    
{
        
static void Main(string[] args)
        
{
            
try
            
{
                Society rich 
= new Rich();
                Society poor 
= new Poor();
                Society et 
= new ET();

                Console.WriteLine(
"富人的婚恋过程。。。。。。。。\n");
                Marry(rich);

                Console.WriteLine();

                Console.WriteLine(
"穷人的婚恋过程。。。。。。。。\n");
                Marry(poor);

                Console.WriteLine();

                Console.WriteLine(
"外星人的婚恋过程。。。。。。。。\n");
                Marry(et);
            }

            
catch (Exception e)
            
{
                Console.WriteLine(e.Message);
                Console.Read();
            }


        }


        
static public void Marry(Society society)
        
{
            society.Marry();
        }

    }


    
//******************************************************************

    
//社会公认的婚恋过程,他是抽象的,只有步骤没有具体内容
    public abstract class Society
    
{
        
abstract public void Meet();    //第一次见面
        abstract public void Dinner();  //吃饭
        abstract public void Journey(); //游玩约会
        abstract public void Wedding(); //婚礼
        abstract public void House();   //婚房

        
//每一个人都要经历的婚恋历程,需要做哪些事情社会已经替你安排好了
        
//人在江湖身不由己,不管你是穷人还是富人你都无法改变这个过程
        
//但是,具体实施的时候我们还是可以掌握着自己的命运
        
//这里是恋爱结婚的模版方法
        public void Marry()
        
{
            Console.Write(
"见面:");
            Meet();

            Console.Write(
"吃饭:");
            Dinner();

            Console.Write(
"游玩:");
            Journey();

            Console.Write(
"婚礼:");
            Wedding();

            Console.Write(
"婚房:");
            House();
        }

    }


    
//******************************************************************

    
//我希望自己是一个富人,下面是我设想的富人的婚恋过程
    public class Rich : Society
    
{
        
public override void Meet()
        
{
            Console.WriteLine(
"用半年的时间调查对方的详细情况,见面这天签订婚姻合同,一个月后举行婚礼\n");
        }


        
public override void Dinner()
        
{
            Console.WriteLine(
"18.8万元的天价年夜饭一份,先凑合一下吧!\n");
        }


        
public override void Journey()
        
{
            Console.WriteLine(
"花2000万美元坐神舟8号到太空去看星星\n");
        }


        
public override void Wedding()
        
{
            Console.WriteLine(
"克林顿作为特邀嘉宾主持,对全世界150个国家进行现场直播\n");
        }


        
public override void House()
        
{
            Console.WriteLine(
"给小布什打个招呼,借用白宫一个月\n");
        }

    }


    
//******************************************************************

    
//虽然我很穷,但是我也要恋爱结婚
    public class Poor : Society
    
{
        
public override void Meet()
        
{
            Console.WriteLine(
"见面之前只有对方的电话号码,在天桥底下见面,十五分钟啥也没打听出来\n");
        }


        
public override void Dinner()
        
{
            Console.WriteLine(
"两份肯德鸡套餐,花了五六十元,心疼啊!!!\n");
        }


        
public override void Journey()
        
{
            Console.WriteLine(
"从公园后墙跳进去,里面的长椅可以免费坐,惊险刺激又节约\n");
        }


        
public override void Wedding()
        
{
            Console.WriteLine(
"只要认识的人一律发请帖,收了这么多年的罚款单,得连本代利赚回来!!\n");
        }


        
public override void House()
        
{
            Console.WriteLine(
"单位宿舍20来平米,暂时住住吧!媳妇,看看睡马路的那哥们,不错了!!!\n");
        }

    }


    
//******************************************************************

    
//外星人怎么恋爱结婚呢?让你来当一回编剧吧。。。。
    public class ET : Society
    
{
        
string msg = "剧本还没有写好,请自行解决!";

        
public override void Meet()
        
{
            
throw new Exception(msg);
        }


        
public override void Dinner()
        
{
            
throw new Exception(msg);
        }


        
public override void Journey()
        
{
            
throw new Exception(msg);
        }


        
public override void Wedding()
        
{
            
throw new Exception(msg);
        }


        
public override void House()
        
{
            
throw new Exception(msg);
        }

    }

}

执行结果如下图:

适配器模式 - Adapter Pattern - 和申、纪晓岚泡妞比赛的故事:【上一篇】
工厂方法模式 - Factory Method - 文物管理衙门 - 和申的为官经营之道第二部分:【下一篇】
【相关文章】
  • 适配器模式 - Adapter Pattern - 和申、纪晓岚泡妞比赛的故事
  • 建造者模式-Builder Pattern -领导者艺术-乾隆、和申、纪晓岚和格尔丹的故事
  • 策略模式-Strategy Pattern-康熙收复台湾-明珠和索额图的不同策略
  • 观察者模式 Observer Pattern - 三国超级间谍战 - 美女貂蝉的故事
  • 枚举器模式-Iterator Pattern -使用 foreach 语句、实现多个枚举器
  • C++ Template: The Complete Guide 学习-8.4友元
  • Phplibtemplate、Fasttemplate、SMARTY那个快?
  • 在Atlas服务器端实现中推荐使用Web Service而不是Page Method
  • http: Request methods
  • 获得GridView的EmptyDataTemplate中的控件
  • 【随机文章】
  • JVM GC的Heap
  • Bash编程实例 二
  • QEMU:开始简单又快速的模拟OS吧
  • 用Authorware制作选择题课件
  • 代码规约
  • ORACLE中的ROWID
  • 在Ubuntu中架设apache+php+mysql服务器
  • VCM2000迈普呼叫管理服务器
  • IPv6寻址体系结构
  • [热布克-www.lmh2004.cn]五星超经典极力推荐:学-语言-C++语言-编程必看的书(转)
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.