Дизайн многоуровневого программного обеспечения абстракции

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

По существу будет 3 главных уровня классов. Эти два класса должны будут говорить друг с другом.

Первыми являются входные исходные данные. В настоящее время есть 2 главных типа входных данных, которые производят подобный, но не идентичная продукция. Главная цель этих классов будет состоять в том, чтобы получить данные из двух источников различия и преобразовать их в общий интерфейс для использования в остальной части программы.

Второй набор будет адаптером для внешней библиотеки. Библиотека периодически обновлялась, и у меня нет причины подозревать, что она не продолжит обновляться в течение лет. Скорее всего, каждая модернизация останется очень похожей на предыдущую, но могли бы быть некоторые небольшие изменения, внесенные, чтобы поддержать новую версию библиотеки. Этот уровень будет ответственен за взятие исходных данных и форматирование их для использования выходного класса.

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

0
nl ja de
Вводы и выводы - на самом деле сложные наборы, т.е., они будут вводить и производить совершенно другие форматы, различные файлы, и т.д. Это будут больше, чем просто простая функция.
добавлено автор PearsonArtPhoto, источник
Вам действительно нужны классы для, например, ввод и вывод? Помните золотое правило за классы; Если у вашего класса есть два метода, и один из них __ init __ , не класс, а функция.
добавлено автор Roland Smith, источник
Просто держите python.org/dev/peps/pep-0020 в памяти. Особенно "Простой лучше, чем комплекс".
добавлено автор Roland Smith, источник

1 ответы

Настройте код следующим образом, по существу после a шаблон "мост", но с многократными уровнями абстракции.

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

Класс обертки будет a шаблон "фабрика". Большая часть кода должна быть распространена между различными внедрениями, таким образом, это должно работать хорошо, чтобы обращаться с мелкими различиями.

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

0
добавлено
Python
Python
7 654 участник(ов)

Уютный чат для профессионалов, занимающихся поиском питоньих мудростей. Как не получить бан: https://t.me/ru_python/577926

Python beginners
Python beginners
4 449 участник(ов)

Вопросы про Python для чайников. Cпам и троллинг неприемлем. Не злоупотребляйте стикерами. Частозадаваемые вопросы: https://github.com/ru-python-beginners/faq/blob/master/README.md Статистика тут: https://grstats.me/chat/x4qym2k5uvfkr3al6at7

pro.python
pro.python
1 090 участник(ов)

Сообщество разработчиков под Python Создатель: @rodgelius

Rude Python
Rude Python
971 участник(ов)

Python без „девочек”, здесь матерятся и унижают Django. Not gay friendly. Правила: t.me/rudepython/114107 @rudepython | t.me/rudepython

rupython
rupython
509 участник(ов)

Группа создана с целью оперативного получения ответов на возникающие вопросы по разработке на яп python, смежные темы, а также человеческого общения. Приветствую!

Python-programming
Python-programming
266 участник(ов)

Чат группы вконтакте https://vk.com/python_community