Вопросы с тегом «design-principles»

79
Существуют ли какие-либо ОО-принципы, которые практически применимы для Javascript?

Javascript - это объектно-ориентированный язык на основе прототипов, но он может быть основан на классах различными способами: Написание функций для самостоятельного использования в качестве классов Используйте изящную систему классов в фреймворке (например, mootools Class.Class ) Создайте его из...

27
Что может пойти не так, если нарушится принцип подстановки Лискова?

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

17
Применяется ли принцип подстановки Лискова к классам, реализующим интерфейс?

LSP утверждает, что классы должны быть заменяемыми для их базовых классов, а это означает, что производные и базовые классы должны быть семантически эквивалентными. Но применяется ли LSP к классам, реализующим интерфейс? Другими словами, если метод интерфейса, реализуемый классом, семантически...

16
Слабая связь в объектно-ориентированном дизайне

Я пытаюсь изучить GRASP, и я нашел это объяснение ( здесь на странице 3 ) о низком соединении, и я был очень удивлен, когда обнаружил следующее: Рассмотрим метод addTrackдля Albumкласса, два возможных метода: addTrack( Track t ) и addTrack( int no, String title, double duration ) Какой метод...

15
Как Закон Деметры применяется к объектно-ориентированным системам в отношении сцепления и сцепления? [закрыто]

Закрыто . Этот вопрос должен быть более сфокусированным . В настоящее время он не принимает ответы. Хотите улучшить этот вопрос? Обновите вопрос, чтобы он был сосредоточен только на одной проблеме, отредактировав этот пост . Закрыто 6 лет назад . Как Закон Деметры применяется к...

14
Как проверить принцип подстановки Лискова в иерархии наследования?

Вдохновленный этим ответом: Лиск принцип замещения требует , что Предпосылки не могут быть усилены в подтипе. Постусловия не могут быть ослаблены в подтипе. Инварианты супертипа должны быть сохранены в подтипе. Ограничение истории («правило истории»). Объекты считаются изменяемыми только через их...

14
Два противоречивых определения принципа разделения интерфейсов - какое из них правильное?

При чтении статей об ISP, кажется, есть два противоречивых определения ISP: Согласно первому определению (см. 1 , 2 , 3 ), провайдер заявляет, что классы, реализующие интерфейс, не должны принуждаться к реализации функций, которые им не нужны. Таким образом, толстый интерфейсIFat interface IFat {...

9
Когда прекратить наследование?

Однажды я задал вопрос о переполнении стека о наследовании. Я сказал, что проектирую шахматный движок в ООП-моде. Таким образом, я наследую все свои части от абстрактного класса Piece, но наследование все еще продолжается. Позвольте мне показать по коду public abstract class Piece { public void...

9
Существуют ли существенные недостатки в зависимости от абстракций?

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