@beduin01

Как избежать повторного создания экземпляра класса?

Пишу на D, но думаю программисты на C# мне смогут подсказать т.к. проблема не в языке, а в концепции использования классов.

В программе 3 класса:
parseConfig
seismoDownload
MySQL

работает программа так:
Создаем в main() и запускаем к выполнению экземпляр класса:
auto parseconfig = new parseConfig();

Если конфиг правильный и данные по ссылкам в нем доступны, то внутри внутри экземпляра класса parseConfig()
созадем экземпляр класса
auto seismodownload = new seismoDownload(emsc_csem);
парсим им данные и теперь нам нужно как-то загрузить их в БД. После успешного парсинга я создаю:
auto mysql = new MySQL(parseconfig);

И тут возникает проблема.
1. Я мог бы создать экземпляр подключения к БД в main, но в этом бы не было смысла т.к. не факт, что данные будут доступны, а если их нет, то экземпляр класса создавать не надо.
2. Из экземпляра класса seismoDownload я не могу получить доступ к объявленному в main parseConfig

Как мне быть если в экземпляре класса для работы с БД (загрузка туда данных) мне нужны данные от двух других классов. Я же не могу конструктор вызвать в одном из них, т.к. нужны еще данные от второго класса.

Вот как это в коде выглядит:

void main()
{
	auto parseconfig = new parseConfig();
}

class parseConfig
{
	// Вот эти данные я получаю из конфига
	string dbname;
	string dbuser;
	string dbpass;
	string dbhost;
	string dbport;

	if (checkLinkCode(emsc_csem) == 200)
	{
		auto seismodownload = new seismoDownload(emsc_csem);
		seismodownload.parse();
	}
}

class seismoDownload
{
	auto mysql = new MySQL(parseconfig); // the problem is here!	
	eqs // предположим я получил данные в эту переменную

}

class MySQL
{
	this(parseConfig parseconfig)
	{
	   // мне нужны конфиги из parseconfig и eqs. В какой момент и как мне их сюда передать?
		
	}
}
  • Вопрос задан
  • 2423 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы