zoukankan      html  css  js  c++  java
  • 用最简单的例子理解对象为Null模式(Null Object Pattern)

    所谓的"对象为Null模式",就是要求开发者考虑对象为Null的情况,并设计出在这种情况下的应对方法。


    拿"用最简单的例子理解策略模式(Strategy Pattern) "中的例子来说,在我们的客户端程序中只考虑了用户输入1,2,3的情况,如果用户输入其它数字,比如4,就没有一个对应的IBall接口实现类实例产生,于是会报如下的错:


    2

     

    为了应对这种情况,我们专门设计一个类,当用户输入1,2,3以上的数字,就产生该类的实例。该类同样实现IBall接口。

        public class Others : IBall
    
        {
    
            public void Play()
    
            {
    
                Console.WriteLine("您选择的球类项目目前还不存在~~");
    
            }
    
        }

    在客户端程序中,修改为:

        class Program
    
        {
    
            static void Main(string[] args)
    
            {
    
                IBall ball = null;
    
                SportsMan man = new SportsMan();
    
                while (true)
    
                {
    
                    Console.WriteLine("选择你喜欢的球类项目(1=足球, 2=篮球,3=排球)");
    
                    string input = Console.ReadLine();
    
                    switch (input)
    
                    {
    
                        case "1":
    
                            ball = new Football();
    
                            break;
    
                        case "2":
    
                            ball = new Basketball();
    
                            break;
    
                        case "3":
    
                            ball = new Volleyball();
    
                            break;
    
                        default:
    
                            ball = new Others();
    
                            break;
    
                    }
    
                    man.SetHobby(ball);
    
                    man.StartPlay();
    
                }
    
            }
    
        }
    

     

    以上,在swich语句中的default部分,当用户输入1,2,3以外的数字,就创建一个同样实现IBall接口、专门处理Null的类实例。       

    3

  • 相关阅读:
    任务安排(代价提前付)
    10 01模拟赛订正
    哈希hash
    初学期望
    P1251 递推专练3
    P1229-神秘岛
    P1228-重叠的图像
    白银莲花池
    求强连通分量
    割边
  • 原文地址:https://www.cnblogs.com/darrenji/p/3959925.html
Copyright © 2011-2022 走看看