заказ и подзаказ - PullRequest
       25

заказ и подзаказ

0 голосов
/ 30 ноября 2009

У меня уже есть класс заказов со многими свойствами и методами. Теперь мне нужно создать класс подзаказа, который является подмножеством класса заказа. Он не только имеет много полей, которые имеет класс заказа, но также имеет много одинаковых методов вычисления, возможно, с одной или двумя строками различий в некоторых местах. Класс заказа должен содержать список объектов подзаказа. Как бы я занялся созданием класса подзаказа? Должен ли я получить его из класса заказа?

Ответы [ 3 ]

0 голосов
/ 30 ноября 2009

Кажется, дело в рефакторинге ...
Хотя класс Order легко существует, похоже, что некоторые его свойства и методы необходимо переместить в OrderSubClass.
Если каким-то образом некоторые свойства и поведение этих двух классов являются общими, может также подойти создание общего базового класса (или интерфейса).

Как только вышеприведенное упорядочено, класс Order может стать контейнером для подзаказов, что, по-видимому, является указанием в вопросе.

0 голосов
/ 30 ноября 2009

Composite Pattern может дать вам совет о желаемом дизайне.

Но у меня была бы такая иерархия:

OrderBase
  |--> MainOrder
  |--> Suborder

или если MainOrder и Suborder достаточно различны, то интерфейс лучше использовать:

MainOrder <--- IOrder
Suborder  <--- IOrder

Но это не разделит реализацию.

0 голосов
/ 30 ноября 2009

Если подзаказ не разделяет все свойства заказа, я бы не стал выводить Подзаказ из заказа.

Вместо этого создайте общий базовый класс, который имеет общее поведение и свойства, а также выведите Order и Suborder из базового класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...