Интерфейсы, наследование и формы окон в c # - PullRequest
1 голос
/ 22 мая 2009

У меня есть вопрос дизайна. При написании приложения, в котором есть несколько компонентов, которые имеют одни и те же атрибуты и отличаются друг от друга как с точки зрения графического интерфейса пользователя (оконные формы), так и серверной части, как можно теоретически подойти к этому?

Например, у меня есть приложение, в котором у меня есть 4 различных типа продукта. Все формы для ввода информации о продукте имеют 3 разных поля. Пока все просто - имейте базовый класс, затем выведите 4 формы из этого базового класса. Однако, скажем, 2 продукта имеют определенное поведение, которое одинаково для них обоих. Конечно, у меня мог бы быть интерфейс, который определяет методы, а затем эти 2 формы ввода продукта реализуют этот интерфейс, но, поскольку интерфейс не обеспечивает реализацию по умолчанию, не будет ли это пустой тратой? Так как я должен был бы обеспечить реализацию в каждом классе, и если это точно так же, это будет повторение кода.

Конечно, я мог бы поместить этот метод в базовый класс и получить из него 2 формы. Если мои формы имеют более одного общего элемента и не имеют других элементов, какой самый разумный и логичный способ представить это без необходимости отрывать мне волосы?

Ответы [ 3 ]

2 голосов
/ 22 мая 2009

Почему бы не иметь 2 несвязанных класса, производных непосредственно от вашего базового класса, а затем создать новый класс с общей функциональностью, производный от базового класса, а оставшиеся два класса наследовать от этого нового класса?

BaseClass
CommonClass : BaseClass
ClassA : BaseClass
ClassB : BaseClass
ClassC : CommonClass
ClassD : CommonClass
0 голосов
/ 22 мая 2009

Трудно сказать без какой-либо конкретной раскладки. как правило, другой, часто более гибкой формой повторного использования является создание композиции вместо наследования. Фактически иерархия управления показывает, насколько сильной может быть композиция. Может быть, вы можете разделить части вашего пользовательского интерфейса на пользовательские элементы управления, которые собираются на основе конкретного макета продукта, который вам нужен после

0 голосов
/ 22 мая 2009

Один из способов получить общее поведение для двух классов состоит в том, чтобы два класса содержали это поведение в качестве члена вместо наследования такого поведения: для форм это может означать «пользовательский элемент управления» (т. е. повторно используемый набор общих элементов управления).

...