#python #interface #architecture #abstraction
Вопрос:
предположим, что у меня есть модуль, как показано ниже
class B:
def ...
def ...
class A:
b: B
def ...
def ...
Я использую класс B только в качестве переменной-члена класса A
когда я пытаюсь абстрагировать этот модуль для своей логики бизнеса, что я должен делать?
- один большой интерфейс, который имеет абстрактный метод для классов A и B
- два интерфейса, которые имеют абстрактный метод для класса A и класса B по отдельности
- все вышесказанное неверно. другой способ
Комментарии:
1. Я не думаю, что понимаю, какую проблему вы пытаетесь решить, но в любом случае это не по теме для переполнения стека. Здесь не место задавать субъективные вопросы о дизайне кода.
2. @KarlKnechtel я просто создаю лучшую архитектуру для своего SW. я новичок в дизайне SW, но сейчас мне нужно сделать SW в реальном мире на работе. поэтому, прежде чем принять решение, я хотел бы получить несколько советов. я не знал, что не должен задавать субъективный вопрос о дизайне кода в stackvoverflow. если я вас побеспокоил, извините
Ответ №1:
Оба, 1 и 2, являются правильным подходом, но это полностью зависит от вашего приложения.
Я думаю, что два интерфейса, которые имели бы абстрактный метод для класса A и класса B по отдельности, являются правильным подходом, когда оба ваших класса работают отдельно и полностью отличаются друг от друга.
Но, как вы упомянули в своем коде, вы унаследовали класс B в классе A. Если вы создадите единый интерфейс для класса A, он также позволит вам получить доступ к методам из класса B. Таким образом, этот подход хорош. Кроме того, такой подход сократит длину вашего кода, что приведет к быстрой обработке.
Я надеюсь, что это поможет вам принять решение. Дайте мне знать, если потребуются какие-либо другие разъяснения.
Комментарии:
1. спасибо вам за ответ. я думаю, что в этом случае подходит 2 отдельных интерфейса