Открытый экземпляр FactoryClass - PullRequest
0 голосов
/ 27 ноября 2018

Я создал два класса: один для нужного мне объекта (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

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