Я создал два класса: один для нужного мне объекта (action), а второй - как фабричный класс, который я использую для отслеживания каждого экземпляра каждого класса, созданного с помощью массивов (ACTIONS (), OTHER (),etc ()).
Действия создаются из пользовательской формы и фабрики.
Как я могу сделать так, чтобы другая фабрика могла использовать ту же фабрику (мне нужны массивы) (первая пользовательская форма используется для создания действия, вторая - для сортировки массива действий ActionFactory)?
Мне не удается разделить мой ActionFactory
между двумя формами, объявив его открытым, что возвращает ошибку.Я чувствую, что упускаю что-то очевидное.
Подвопрос: Каков лучший дизайн -> Фабричный класс или фабричный метод в самом классе?
Редактировать дополнительную информацию Вот как я могу создать объект Action из своей пользовательской формы
Option Explicit
Private ActionFactory As New Factory
Private Sub CommandButton1_Click()
Dim test As Action
Set test = ActionFactory.CreateAction(Tit.value, ComboBox1.ListIndex, ComboBox2.ListIndex, Startdate.value, EndDate.value, Owner.value)
test.draw
Dim act() As Action
act = ActionFactory.GetTheActionsArray
Debug.Print UBound(act)
End Sub
Это моя фабрика и массив действий и создатель
Option Explicit
Private ACTIONS() As Action
Private OTHERS() as Other
Private counter As Integer
Public Function CreateAction(t As String, d As Integer, c As Integer, std As String, edt As String, ownr As String) As Object
counter = Sheets(Sheets.Count - 1).Cells(1, 1).value
ReDim Preserve ACTIONS(counter)
With New Action
.SetTitle = t
.SetDepartement = d
.SetCategory = c
.SetStartdate = std
.SetEndDate = edt
.SetOwner = ownr
.SetIndexValue = counter
Set ACTIONS(counter) = .Self
Set CreateAction = .Self
End With
Sheets(Sheets.Count - 1).Cells(1, 1).value = Sheets(Sheets.Count - 1).Cells(1, 1).value + 1
End Function
Код работает, что я не могу сделать, это извлечь значения, хранящиеся в ACTIONS () ActionFactory на другомuserform тот userform1.
Это также привело меня к другому вопросу, который у меня есть.Как избавиться от этой фишки в классе Factory.Я бы предпочел что-то в строках:
If ACTIONS() = null Then
ReDim ACTIONS(0)
Else
ReDim preserve ACTIONS(ubound(ACTIONS) + 1)
end if
, очевидно, это не работает.BR, Bob