2013-06-06 3 views
0

У меня вопрос базовой объектно-ориентированной архитектуры. Предположим, у меня есть класс в VB.NET с именем OutputLog. Он имеет методы «Создать», «Создать» и «Прочитать».Базовая архитектура для классов

В моей программе у меня есть несколько классов, в которых я хочу записать в один файл журнала. Так что, если у меня есть класс запуска для меня программа, которая имеет:

Public Class Main 

    logFile = new OutputLog() 
    logFile.create("c:\abc.log") 
    logFile.write("first entry to the log file") 

End Class 


Public Class Two 

    "I want to write to this same log file in this class" 

End Class 

Public Class OutputLog 

    Methods to "Create", "Write" and "Read" 

End Class 

Каков наилучший способ архитектор это? Я могу передать ссылку на logFile в конструкторе второго класса? Это лучший способ справиться с этим? Это означало бы, что для каждого класса, который я хочу записать в файл журнала, мне нужно будет передать logFile в конструкторе?

Благодаря

ответ

0

я могу придумать два пути, чтобы сделать лучшую архитектуру:

а) делают все члены OutputLog статические, такие как создание, запись и чтение. Поэтому вы можете вызывать этих членов в любом месте.

b) прочитайте что-нибудь о Синглтоне. рассмотрите OutputLog как singleton. что тоже решило бы проблему.

Это последнее, что я сделал бы, чтобы передать logFile каждому конструктору.

+0

дать пример кода – Amit

0

Ваши варианты действительно:

  • Изменить класс OutputLog использовать общие методы, то вам не нужен экземпляр класса - When to use Shared methods in .NET

  • Изменение LOGFILE быть глобальной переменной для каждый класс может использовать его - Declare global variables in Visual Studio 2010 and VB.NET

  • Изменить logFile использовать дизайн Singleton, чтобы существовала только одна копия класса - singleton pattern in vb

Вы можете передать копию класса вокруг, но это немного бессмысленно и просто означает, что вам нужно добавить больше и больше коды при добавлении новых классов

0

Если вы хотите написать в одном файле в отделенной классе, вы должны объявить лог вар в модуле в общественном

ВОЗЛАГАЕТСЯ создать Module1.vb в проекте .. добавить

Public logFile as New OutputLog 

В вашем классе Главная

Public Class Main 

    logFile.create("c:\abc.log") 
    logFile.write("first entry to the log file") 

End Class 


Public Class Two 

    logFile.write("this is from class two") 

End Class 
Смежные вопросы