[MCSD]数讲70-483(一)

大家好,这里是阮清寒……目前萌萌哒微软MCP一只。这几篇文来分享一些关于考试的内容……也希望各位能看到有所收获,同时也希望各位如果需要备考70-483,能取得一个好成绩。

不多说废话了。今天给大家带来70-483的几道比较典型的题目以及题目分析,这里全是原创,希望各位会喜欢。

You hava the following requirements:

initialize the _catalog field to a Catalog instance.

initialize the _catalog field only once

ensure that application code acquires a lock only when the _catalog object must be instantiated.

You need to meet the requirement. which three code segments should you insert in sequence at line 09?

public class Kios 
 { 
     static Catalog _catalog = null; 
     static object _lock = new object(); 
     public static Catalog Catalog 
     { 
         get 
         { 
 
             return _catalog; 
         } 
     } 
 }
Correct Answer:

A: lock(_lock)
B: if(_catalog != null ) _catalog= new Catalog();
C: if(_catalog != null )
D: if(_catalog == null ) _catalog = new Catalog();
E: if(_catalog == null)

我相信,国内的兄弟,对英文永远是一段伤。那么各位需要特殊服务吗?好吧,我相信需要——

你有以下需求:

实现_catalog单例,

同时这个实例只能实现一次,

需要确保多线程环境下,这个对象只能被实例化一次。


后面的我就不赘述了,代码估计各位都看得懂。……好吧,很显然这是一种双重锁的用法。相信各位不是新手,培训得到时候都教过,

正解很显然……判空加锁再判空。

于是,你认为我是不是说了一大堆废话。根本没有什么讲解,只是在逗比一样挖苦了一下人就公布答案……实际上确实是,但这道题我想说的并不是题目本身。而是这道题的实际作用。

这是单例的一种变体,单例五种实现方式,估计长时间不去碰设计模式那本书,很多人就记得其中一种,或者就只记得懒汉饿汉两种模式了。

public class Kios
{
    private static Kios instance = new Kios();  
    private Kios(){}  
    public static Kios getInstance()
    {   
        return instance;   
    }  
}
饿汉,不用说了,啥也没干呢,就直接实例化出来。那么我们把默认值的赋值放在获取里面,就成了懒汉了

public static Kios getInstance()
{
   if(instance == null)
    {   
        instance = new Kios();   
    }   
     return instance;        
} 
不过缺陷也是显而易见,多线程不安全,所以才有上面的双重锁机制。

另外两种……静态内部类,这个东西其实还是蛮有意思的,虽然不常用,不过对于public static class内部嵌套class的做法,我只在损管和舆情两个项目用过。只是一种偷懒的写法。不过这东西还是符合设计的。毕竟面向对象原则,只要实现的通,程序依赖于更高层的抽象而不是具体的实现。而且要遵循开闭源。因此,写出这种代码并不为过。

关于枚举器,其实.net也是有对应的机制的,我们可以利用泛型代码。这里是引用的wuha555的代码,具体没有策措施。代码如下:

    class Singleton<T> where T: class,new()  
    {  
        private static T _instance;  
        private static readonly object syslock=new object();  
      
        public static T getInstance() {  
            if (_instance == null)  
            {  
                lock (syslock) {  
                    if (_instance == null)  
                    {  
                        _instance = new T();  
                        return _instance;  
                    }  
                    else {  
                        return _instance;  
                    }  
                }  
            }  
            else {  
                return _instance;  
            }  
        }  
    }  
class myclass : Singleton<myclass>
{
    public void ss()
    {
        Console.WriteLine("111");
    } 
}
关于单例,我就讲到这里。在下面的内容里,我讲继续讲解其他的70-483题目

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值