Я знаю, что это плохое программирование и архитектура, когда у вас есть объект класса, который должен использоваться только в одном месте. Но меня также предупреждали о создании мощного объекта, который может сделать слишком много. Так как мне это сломать? Вот пример того, что я имею в виду - пожалуйста, не воспринимайте эти вещи буквально, поскольку это только пример.
В любом случае, у меня есть объект, с которым я работаю, довольно сложный. В этом объекте хранится много информации, и он может выполнять много манипуляций с данными. Итак, давайте назовем этот объект Землей.
Public Class Planet
Private _population As UInteger = 0
Public ReadOnly Property Population() As UInteger
Get
Return _population
End Get
End Property
Public Overridable Sub CreatePerson(Optional ByVal numberOfPeople As Integer = 1)
_population += numberOfPeople
End Sub
End Class
Пока достаточно просто. Но я мог бы продолжать и продолжать многое из того, что объект мог бы выполнить. Итак, чтобы не усложнять ситуацию, я разбил «активизации», которые должны происходить днем и ночью, создав два других объекта: день и ночь (эти два не показаны). Так что теперь у меня есть обновленный класс Планеты.
Public Class Planet
Private _population As UInteger = 0
Private _day As New Day
Private _night As New Night
Public ReadOnly Property Day() As Day
Get
Return _day
End Get
End Property
Public ReadOnly Property Night() As Night
Get
Return _night
End Get
End Property
Public ReadOnly Property Population() As UInteger
Get
Return _population
End Get
End Property
Public Overridable Sub CreatePerson(Optional ByVal numberOfPeople As Integer = 1)
_population += numberOfPeople
End Sub
End Class
Теперь эти два класса - День и Ночь - никогда не будут использоваться вне класса Планета. Это хороший способ организовать мои методы и атрибуты для этого «родительского» класса Planet? Как еще я бы аккуратно организовал подобное?
Я читал о рефакторинге, но я не думаю, что это помогает моему делу. Мне нравится идея, что я могу вызвать объект Планеты, например: Earth.Night.BlowUpMoon
.