1
Общий раздел / Маска вместо интерфейсов и базового класса
« : Декабрь 12, 2016, 02:24:07 pm »
Всем привет.
Задался таким вопросом существует ли в ООП "Маски" которые при наложении на объект возвращают, только то, что соответствует маске (методы, свойства...)?
Почему возник такой вопрос, если использовать наследование от интерфейса или абстрактного класса, то это накладывает на этапе проектирования ограничения на объекты.
Как я себе представляю действие маски. Допустим имеется два класса несвязанные между собой базовыми наследованием, применяя к ним маску мы получаем доступ к одинаково именованным методам и свойствам, которые соответствуют маске.
Накладываем маску
Что скажите?
Задался таким вопросом существует ли в ООП "Маски" которые при наложении на объект возвращают, только то, что соответствует маске (методы, свойства...)?
Почему возник такой вопрос, если использовать наследование от интерфейса или абстрактного класса, то это накладывает на этапе проектирования ограничения на объекты.
Как я себе представляю действие маски. Допустим имеется два класса несвязанные между собой базовыми наследованием, применяя к ним маску мы получаем доступ к одинаково именованным методам и свойствам, которые соответствуют маске.
Код: [Выделить]
class A
{
public string name;
public void Test(){}
...
}
class B
{
public string name;
public void Test(){}
....
}
Накладываем маску
Код: [Выделить]
{
A a;
B b;
Mask1 mask;
mask = new Mask1(a);
mask.Test();
string name = mask.name;
mask = new Mask1(b);
mask.Test();
string name = mask.name;
List<A> listA;
List<B> listB;
TestForALL(MaskList(listA));
TestForALL(MaskList(listB));
}
....
void TestForALL(MaskList list)
{
for (int i=0; i<list.Count; i++)
{
list[i].Test();
string name = list[i].name;
}
}
Что скажите?