c# 委托、接口、父类

前言

在使用C#的过程中,经常会使用到委托、接口以及父类来实现一些复杂的逻辑和设计模式,本文针对三者的特性,对其使用情景及原理进行初步研究。

基础知识

*委托
设A类对象包含一个B类对象。

Class A 
{ 
    int intA; 
    Class B; 
    Public void ChangeA()
    {
        //操作intA属性 
    }; 
} 

Class B 
{
    Public Delegate void DelegateB(); 
    Public Event DelegateB delegateB; 
    int intB; 
    Public void ChangeB() 
    { 
        //操作intB属性 
    } 
    Public Void ChangeA() { delegateB(); } 
} 
存在一个A类的实例,若A要操作B的intB属性,可以直接调用B的函数ChangeB,但是当B需要改变实例A的intA属性时,却不能直接调用ChangeA。此时,可以使用委托来实现,在B中放置委托事件delegateB,并绑定函数:B.delegateB += A.ChangeA。这样,当调用B.ChangeA时,实现了对intA属性的操作。 

*接口

public interface Iinterface 
{ 
    int A{get;set;} 
    void interfaceA(); 
} 

接口可以用于程序模块化设计,以及程序的后期扩展。一般来说,接口的使用有两种情况:
1.Interface是一个类的方法、属性的抽象,上层结构负责调用接口属性、方法,下层负责接口的实例化,实现多态。
2.当一个类的实例化过程和类的操作使用过程不在同一模块,可以使用类接口进行操作编码,程序运行时,将实例化的类赋给类接口。
注:接口中不能放委托、不能Clone 。

*父类
父类的功能与接口类似,只是父类提供了每个方法的默认实现,子类可以选择重写该方法。

常用模式

当2个类是具体的类时,使用委托,可以方便的实现观察者模式。但是,当涉及到具体类和接口之间的事件操作时,由于接口类型中不能放置委托类型,不能直接使用。







上述方法相当于Java中的委托实现,定义一个接口,定义A类去继承该接口,在B类中实现一个绑定方法Bind(A a)。

猜你喜欢

转载自www.cnblogs.com/zritical/p/9062839.html