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

Файл Python называют "модулем", и это - один способ организовать Ваше программное обеспечение так, чтобы это имело "смысл". Другой - каталог, названный "пакетом".

модуль А является отличной вещью, которая может иметь один или две дюжины тесно связанных классов. Прием - то, что модуль - что-то, что Вы импортируете, и Вам нужен тот импорт, чтобы быть совершенно разумными людям, которые будут читать, поддержать и расширить Ваше программное обеспечение.

правило - это: модуль является единицей повторного использования .

Вы не можете легко снова использовать единый класс. Необходимо быть в состоянии снова использовать модуль без любых трудностей. Все в Вашей библиотеке (и все Вы загружаете и добавляете) является или модулем или пакетом модулей.

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

from ssReader import Reader
from theCalcs import ACalc, AnotherCalc
from theDB import Loader

def main( sourceFileName ):
    rdr= Reader( sourceFileName )
    c1= ACalc( options )
    c2= AnotherCalc( options )
    ldr= Loader( parameters )
    for myObj in rdr.readAll():
        c1.thisOp( myObj )
        c2.thatOp( myObj )
        ldr.laod( myObj )

Думают об импорте как о способе организовать Ваш код в понятиях или блоках. Точно то, сколько классов находится в каждом импорте, не имеет значения. То, что имеет значение, является полной организацией, которую Вы изображаете с Вашим import операторы.

6
задан alexandrul 2 December 2009 в 08:32
поделиться

1 ответ

Я бы использовал паттерн фасада здесь: в библиотеке выставьте общедоступный метод в общедоступном классе, который выполняет инициализацию контейнера (например, простой Initialize () ) и используйте Castle Windsor только внутри библиотеки, чтобы клиенты библиотеки даже не знали, что вы используете его.

6
ответ дан 10 December 2019 в 02:48
поделиться
Другие вопросы по тегам:

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