public class Speech
    {
//问题1:
   private SpeechLib.SpVoiceClass voice = null;//定义个一个用来发音的类
        private Speech()
        {
            BuildSpeach();
        }
        private void BuildSpeach()
        {
            if (voice == null)
                voice = new SpVoiceClass();
        }
/*****************************************************************/
//问题2:
  private static Speech _Instance = null;
        public static Speech instance()
        {
            if (_Instance == null)
                _Instance = new Speech();
            return _Instance;
        }
    }问题1中:解释一下 private Speech()里面调用BuildSpeach()方法的作用是什么?BuildSpeach()方法内写的是什么意思?
问题2中:在程序中并没有看到有什么地方调用instance()方法,是不是这种写法特殊?程序运行时自动去调用了?同时解释一下instance()写的内容是什么意思,有什么用途?希望高手指点,感激不尽!!!!!

解决方案 »

  1.   

    问题一:BuildSpeach()方法的作用是创建新实例。
    问题二:晕死,这个程序没有调用,在别的地方调用了的呀!这个就是初始化的意思。
      

  2.   


    up这个是单态模式,private Speech()是个私有的构造函数,这使得Speech类无法在外部用使用new的方式来获得其对象
    问题1:在构造函数private Speech()中调用的方法BuildSpeach()的作用就是获得一个SpVoiceClass类型的对象并赋值给voice问题2:之前已经说了这是单态模式,所以无法使用new的方式来得到类的对象,所以这里定义了一个静态方法instance()来返回一个Speech类的对象,而静态方法是使用类名来调用的
    以上是个人的理解,如有不对的地方还请指正
      

  3.   

    问题1中:解释一下 private Speech()里面调用BuildSpeach()方法的作用是什么?BuildSpeach()方法内写的是什么意思? ==>如果voice 为空,则实例化一个发声的类问题2中:在程序中并没有看到有什么地方调用instance()方法,是不是这种写法特殊?程序运行时自动去调用了?同时解释一下instance()写的内容是什么意思,有什么用途? 
    ==>从你发出来的代码确实不知在哪里有用,不过这个静态方法返回的是Speech的实例,应该是在其它地方有调用
      

  4.   

    我看到了 是在form1中实例化对象的时候调用了
    Speech sp = Speech.instance();//Speech类实例
      

  5.   

    说的对 在form1里看到调用了