面向对象编程笔记--static

 

    通过static方法,提供静态的不需要实例化即可访问的方法或属性。所有的调用者可以使用同一个类(不实例化)或对象(只实例化一次),可以应用的场景:

    1)各个调用者共享数据,协同工作。

    2)对象只可以实例化一次。

    3)被调用对象的生命周期 与调用者无关。或者说,该对象有全局的生命周期,持续工作,提供给调用者的只是一个接口。

 

    类的实例由类自己来维护,对外提供一个 取实例的一个方法。

    典型代码:

public class TestClass
{
    //维护的实例
    private static TestClass instance;
    //对外提供的get实例的静态方法
    public static TestClass Instance
    {
        get
        {
            if (instance == null)
                instance = new TestClass();
            return instance;
        }
    }
}

    应用举例:

    WPF中关于DependencyProperty的定义

/*
*    两种使用方式
*        1)以总类的形式利用Dictionary,记录所有通过该类的静态注册方法注册的属性
*        2)生成新的对象
*
*/ 
public class DependencyProperty
{
    internal static Dictionary<object, DependencyProperty> RegisteredDps = new Dictionary<object, DependencyProperty>();
    internal string Name;
    internal object Value;
    internal object HashCode;
    //构造函数
    private DependencyProperty(string name, Type propertyName, Type ownerType, object defaultValue)
    {
        this.Name = name;
        this.Value = defaultValue;
        this.HashCode = name.GetHashCode() ^ ownerType.GetHashCode();
    }
    //注册函数
    public static DependencyProperty Register(string name, Type propertyType, Type ownerType, object defaultValue)
    {
        DependencyProperty dp = new DependencyProperty(name, propertyType, ownerType, defaultValue);
        RegisteredDps.Add(dp.HashCode, dp);
        return dp;
    }
}

 

posted on 2016-05-31 18:06  the_owl  阅读(144)  评论(0编辑  收藏  举报

导航