Как мне структурировать наследование этого класса?

Я разрабатываю приложение для передачи баз данных и каталогов загруженных пользователями изображений / документов с нашего производственного сервера на сервер разработки. Приложение написано на Coldfusion, но я не думаю, что язык имеет отношение к этому вопросу - это скорее вопрос структуры / архитектуры, чем вопрос, специфичный для языка.

Я буду писать псевдокод для своих примеров, поэтому, пожалуйста, не разбирайте синтаксис.

Когда я видел демонстрацию наследования классов, обычно это было что-то простое вроде class Student extends Person () {} . Очевидно, Студент - более специализированный человек, поэтому в этом есть смысл.

В моем приложении у меня есть класс Site () , который содержит соответствующую информацию, такую ​​как DSN, каталог загрузки файлов и т. д. Я выполняю мой экспорт SQL в один класс и экспорт моих файлов в другой класс, оба из которых вызываются из класса сайта (псевдокод):

class Site {
    public function exportSql() {
        sqlExport = new sqlExport(this.dsn);
        sqlExport.createDumpAndZipItAndStuff();
    }
    public function exportUploads() {
        uploadsExport = new uploadsExport(this.uploadDirectory);
        uploadsExport.copyAndZipFilesAndStuff();
    }
}

Класс Site не делает ничего, кроме управления потоком трафика, который запрашивается из внешнего интерфейса приложения, все остальное передается одному из классов экспорта.

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

Можно ли, чтобы мои экспортные классы наследовали класс Site, чтобы я мог напрямую обращаться к свойствам? Классы экспорта не являются более специализированным сайтом, как в примере «Человек / Студент», который я приводил ранее. Скорее, они просто выполняют тяжелую работу для класса Site.

Если это не подходящая ситуация для наследования, как мне структурировать приложение? Как я сказал ранее, то, как я делаю это прямо сейчас , работает , но я хотел бы воспользоваться этой возможностью, чтобы узнать больше о шаблонах проектирования и написать свой код таким образом, чтобы это имело смысл.

5
задан Sean Walsh 18 May 2011 в 19:20
поделиться