Pregunta

Tengo una pregunta de diseño. Al escribir una aplicación donde hay varios componentes que comparten algunos atributos, y se diferencian en los demás tanto en términos de interfaz gráfica de usuario (Windows Forms) y la parte de atrás, ¿cómo se teóricamente abordar esto?

Por ejemplo, tengo una aplicación donde tengo 4 tipos diferentes de un producto. Los formularios para entrar en los detalles del producto Todos comparten 3 campos diferentes. Hasta el momento, fácil - tener una clase base, a continuación, se derivan las 4 formas de esta clase base. Sin embargo, dicen, 2 productos comparten un comportamiento determinado que es el mismo para ambos. Por supuesto, podría tener una interfaz que define los métodos, a continuación, tener estas formas de entrada de 2 productos implementan esta interfaz, pero ya que la interfaz no proporciona ninguna aplicación por defecto, no sería un desperdicio de hacer eso? Dado que tendría que proporcionar una implementación en cada clase y si es exactamente el mismo, sería código de repetición.

I podía por supuesto poner este método en la clase base y tienen 2 formas derivadas de ella. Si mis formas comparten más de un elemento común y no comparten otros elementos, lo que sería la forma más sana, más lógica para representar esto sin tener que rasgar mi pelo?

No hay solución correcta

Otros consejos

¿Por qué no tienen las 2 clases no relacionadas derivan directamente de su clase base y luego crear una nueva clase con la funcionalidad común y se deriva de la clase base y han las dos clases restantes heredar de esa nueva clase?

BaseClass
CommonClass : BaseClass
ClassA : BaseClass
ClassB : BaseClass
ClassC : CommonClass
ClassD : CommonClass

Una forma de obtener un comportamiento común en dos clases es para las dos clases a contener que el comportamiento como miembro, en lugar de heredar que el comportamiento: para las formas, esto podría significar que define un 'control de usuario' (es decir, una colección reutilizable de controles comunes).

Es difícil de decir sin ningún diseño específico. generalmente, la otra forma, a menudo más flexible de reutilización está haciendo composición en lugar de herencia. De hecho, la jerarquía de control muestra cuán fuerte composición puede ir. Tal vez se puede separar partes de la interfaz de usuario en controles personalizados que se ensamblan basan en el diseño de producto específico que está después

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top