Принципы объектно-ориентированного программирования

         

Комбинирование интерфейсов



Комбинирование интерфейсов

Еще одна мощная функция С# — возможность комбинирования двух или более интерфейсов, и в итоге класс должен реализовать только результат комбинирования. Пусть вы хотите создать новый класс TreeView, реализующий оба интерфейса: IDragDrop и ISortable. Поскольку резонно предполагать, что и другим элементам управления, таким как ListView и ListBox, понадобится скомбинировать эти функции вам, возможно, захочется скомбинировать интерфейсы IDragDrop и


ISortable в единое целое:

using System;

public class Control

{

}

public interface IDragDrop {

void DragQ; void Drop(); }

public interface ISerializable

{

void SerlalizeO;

}

public interface ICombo : IDragDrop, ISerializable

{

// Этот интерфейс не дает ничего нового // (что касается поведения), так как единственное его // назначение - скомбинировать интерфейсы IDragDrop // и ISerializable в единый интерфейс.

}

public class MyTreeView : Control, ICombo

{

public void DragQ

{

Console.WriteLineC'MyTreeView.Drag called");

}

public void Drop()

{

Console.WriteLineC'MyTreeView. Drop called");

>

public void Serialize()

{

Console.WriteLineC'MyTreeView.Serialize called");

} }

class CombiningApp

{

public static void MainQ

{

MyTreeView tree = new MyTreeViewO;

tree.DragO; tree.DropQ; tree.SerializeO; }

Комбинируя интерфейсы, вы не только упростите возможность агрегирования семантически связанных интерфейсов в единый интерфейс, но при необходимости сможете добавлять к новому "композитному" интерфейсу дополнительные методы.



Содержание раздела