Что является важными правилами в Дизайне Объектной модели

Очевидно, что вы не можете знать, не отправляя HTTP-запросы, чтобы увидеть, какие перенаправления они делают, пока вы не нажмете HTTP 200.

Стоит ли сначала попробовать http: // или https: //, это зависит от того, что вы пытаетесь сделать. При сканировании веб-сайта - первый, если вы намереваетесь использовать эти ссылки в общедоступных веб-службах, затем второй.

Так что я бы сделал это следующим образом:

  1. запрос для незащищенного домена (без www) с https: //
  2. , если это не удается или время ожидания истекло, тогда запросите пустой домен с http: //
  3. , если это не удается, повторите вышеописанные шаги, но для www

NB большинство веб-сайтов, использующих www, будут перенаправлены с пустого домена. HTTPS-сайты будут перенаправлять с http: // на https: // тоже. Таким образом, самый безопасный запрос, который вы можете сделать, это no-www + http: //, но я бы начал с предположения о https, так как шифрование сети сейчас является общей тенденцией.

5
задан AliPST 22 January 2009 в 13:32
поделиться

6 ответов

Несколько хороших:

ТЕЛО

Единственный принцип ответственности
Откройтесь/закройте принцип
Принцип замены Liskoff
Интерфейсный принцип сегрегации
Принцип инверсии зависимости

Больше информации и больше принципов здесь: http://mmiika.wordpress.com/oo-design-principles/

3
ответ дан 14 December 2019 в 13:49
поделиться
1
ответ дан 14 December 2019 в 13:49
поделиться

Проверьте "принципы" Объектно-ориентированного проектирования. Они имеют инструкции для всех вопросов, которые Вы задаете.

Ссылки:

Контроль статьи "Design Principles" на вышеупомянутом сайте. Они - лучшие доступные ссылки.

0
ответ дан 14 December 2019 в 13:49
поделиться

Принцип замены Лисков, часто выражаемый с точки зрения ", - a". Многими примерами ООП было бы более обеспеченное использование, "имеет -" (в C++, который частное наследование или явный состав), а не общедоступное наследование ("-"),

Получение Права наследования трудно. Выполнение так с интерфейсами (чистые виртуальные классы) часто легче, чем для base/sub классов

1
ответ дан 14 December 2019 в 13:49
поделиться

что они сказали, плюс он похож на Вас, моделируют реальные объекты, таким образом:

  • ограничьте свою объектную модель для точного соответствия реальным объектам.

Можно использовать наследование и компоненты для сокращения кода/модели, но только способами, которые имеют смысл с базовым доменом.

Например, класс Канала со свойством Diameter имел бы смысл, в то время как класс DiameterizedObject (со свойством Diameter) со свойством GeometryType GeometryType. Канал не был бы. Обе модели могли быть сделаны работать, но первый ясно соответствует проблемной области, в то время как последние реализации искусственная (нереальная) перспектива.

Одна дополнительная подсказка: Вы знаете, что у Вас есть образцовое право при нахождении новых возможностей в коде, который Вы не запланировали от запуска - они просто 'естественно' падают из модели. Например, Ваша модель может иметь классы Канала и Соединения (как адаптеры возможности соединения) достаточный для решения непосредственной проблемы (говорят) что соединение каналов различного диаметра друг другу и вычислению скоростей потока, максимальных давлений и структурной целостности. Вы позже понимаете, что, так как Вы смоделировали структурные свойства и свойства возможности соединения Каналов и Соединений точно (в требованиях домена) можно также создать объект JungleGym из связанных каналов и правильно вычислить, сколько структурной загрузки он перенесет.

Это - экстремальный пример, но он должен понять через: модели правильного объекта поддерживают расширение и часто проявляют выгодные неожиданные свойства и функции (не ошибки!).

1
ответ дан 14 December 2019 в 13:49
поделиться

"BottomOfPipe"? Тот другой способ сказать глубину Канала ниже Дороги?

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

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

Вот некоторый совет:

  1. Наследование означает ISA. Если это не содержит, не используйте наследование.
  2. Глубокая иерархия является, вероятно, знаком проблемы.
  3. От Scott Meyers: Сделайте нелистовые интерфейсы классов или краткий обзор.
  4. Предпочтите состав наследованию.
0
ответ дан 14 December 2019 в 13:49
поделиться
Другие вопросы по тегам:

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