как называется то, что я хочу?

Lord_Max

предисловие:
- есть сети магазинов
- каждая сеть состоит из филиалов
- у любого филиала есть прайслист
- филиалы принадлежащие к одинаковой сети имеют одинаковый формат прайса
нужно обновить и распарсить все прайслисты
написано это всё на vb.net'е, каждая сеть магазинов это модуль (вроде бы это что-то типа статического класса например

Module DIXI
Public ShopNetworkName As String = "DIXI"
Public Filials As Dictionary(Of Integer, Shop)

Public Sub RefreshFilialsList
Public Sub RefreshFilialPrices(FilialId as Integer)
Public Sub RefreshAllFilialsPrices
End Module

Module BILLA
Public ShopNetworkName As String = "BILLA"
Public Filials As Dictionary(Of Integer, Shop)

Public Sub RefreshFilialsList
Public Sub RefreshFilialPrices(FilialId as Integer)
Public Sub RefreshAllFilialsPrices
End Module

само обновление делается так:

Sub RefreshAllPrices
DIXI.RefreshFilialsList
DIXI.RefreshAllFilialsPrices

BILLA.RefreshFilialsList
BILLA.RefreshAllFilialsPrices
End Sub

так как количество анализируемых сетей увеличивается - то хочется сделать не через модули, а "по-взрослому" и ещё хочется, чтобы обновление делалось примерно так:

Sub RefreshAllPrices
For Each CurrentShop as Shop in GlobalShopList
CurrentShop.ShopsNetwork.RefreshFilialPrices(CurrentShop.FilialId)
Next
End Sub

Upd(!): сети магазинов отличаются друг от друга только парсером прайслиста

Dimon89

так как количество анализируемых сетей увеличивается - то хочется сделать не через модули, а "по-взрослому"
Выкинуть vb.net?

Lord_Max

а на чём это лучше делать?

Plok2008

Зависит от того, нужно ли прямо этой программой парсить прайсы, и так же от того в каком виде эти прайс-листы. Если они текстовые, то можно быстро всё на питоне написать для начала.
А так - на том языке, на котором удобнее вашему программисту.

Lord_Max

хочу сделать как в примере ниже, но чтобы TestMethodsA и TestMethodsB были синглтонами
проблема в том, что:
Methods or events that implement interface members cannot be declared 'Shared'.
можно как-то обойтись без интерфейса?

Module TestModule
Sub Main
Dim A As New Test(New TestMethodsA)
Dim B As New Test(New TestMethodsB)
A.f
B.f
End Sub

Public Interface ITestMethods
Sub f
End Interface

Public Class Test
Dim methods As ITestMethods
Public Sub f
methods.f
End Sub
Sub New(m As ITestMethods)
methods = m
End Sub
End Class

Public Class TestMethodsA
Implements ITestMethods
Public Sub f Implements ITestMethods.f
Console.WriteLine("F -> A")
End Sub
End Class

Public Class TestMethodsB
Implements ITestMethods
Public Sub f Implements ITestMethods.f
Console.WriteLine("F -> B")
End Sub
End Class

End Module

Lord_Max

Зависит от того, нужно ли прямо этой программой парсить прайсы, и так же от того в каком виде эти прайс-листы. Если они текстовые, то можно быстро всё на питоне написать для начала. А так - на том языке, на котором удобнее вашему программисту.
проблема не парсить, а то что появляется куча модулей/классов, хочется иметь класс, который параметризуется набором методов при создании

Dimon89

а на чём это лучше делать?
На том языке, который хорошо знает ваш программист.

Dimon89

проблема не парсить, а то что появляется куча модулей/классов, хочется иметь класс, который параметризуется набором методов при создании
Это не проблема в любом нормальном языке программирования.

Plok2008

хочется иметь класс, который параметризуется набором методов при создании
Ну так в любом нормальном языке программирования объявляется один класс, который в своём конструкторе содержит код, который делает каждый объект данного класса подходящем для конкретного магазина.
После этого созданные объекты класса данного класса запихиваются в массив, а дальше как ты уже писал -
for shop in shoplist do; shop.method; done
Про бейсик ничего сказать не могу, можно ли создать там определение класса, а потом наплодить объектов данного класса, или нельзя. Может, там каждый Module уже сам по себе объект класса и его нельзя повторно создать.
В общем, выберете любой язык, на котором вашему программисту будет удобно - python, ruby, java, да хоть даже php. Не говоря уже про все более серьёзные языки.

agaaaa

Да всё там можно. Пусть курит мануалы по объектно-ориентированному программированию в VB.NET для новичков.
Оставить комментарий
Имя или ник:
Комментарий: