Принцип замены Лисков (LSP, lsp) является понятием в Объектно-ориентированном программировании, которое указывает:
Функции, которые используют указатели или ссылки на базовые классы, должны быть в состоянии использовать объекты производных классов, не зная это.
В его сердечном LSP об интерфейсах и контрактах, а также как решить, когда расширить класс по сравнению с использованием другая стратегия, такая как состав для достижения цели.
самый эффективный способ, которым я видел, чтобы проиллюстрировать этот тезис, был в [1 122] Главный Первый OOA& D. Они представляют сценарий, где Вы - разработчик на проекте создать платформу для стратегических игр.
Они представляют класс, который представляет плату, которая похожа на это:
Все методы берут координаты X и Y в качестве параметров для определения положения мозаики в двухмерной антенной решетке Tiles
. Это позволит разработчику игр управлять единицами в плате в ходе игры.
книга продолжает изменять требования, чтобы сказать, что игровая основа должна также поддерживать 3D игровые доски для размещения игр, которые имеют полет. Так ThreeDBoard
класс представлен, который расширяется Board
.
На первый взгляд это походит на хорошее решение. Board
обеспечивает и Height
и Width
, свойства и ThreeDBoard
обеспечивают ось Z.
то, Где это ломается, - когда Вы смотрите на всех других участников, наследованных от Board
. Методы для AddUnit
, GetTile
, GetUnits
и так далее, все берут оба параметра X и Y в Board
класс, но ThreeDBoard
потребности параметр Z также.
, Таким образом, необходимо реализовать те методы снова с параметром Z. Параметр Z не имеет никакого контекста к Board
класс и унаследованные методы от Board
, класс теряет их значение. Единица кода, пытающегося использовать ThreeDBoard
класс как его базовый класс Board
, была бы очень неудачливой.
, Возможно, мы должны найти другой подход. Вместо того, чтобы расшириться Board
, ThreeDBoard
должен состоять из [1 119] объекты. Один Board
объект на единицу оси Z.
Это позволяет нам использовать хорошие объектно-ориентированные принципы как инкапсуляция и повторное использование, и doesn’t нарушают LSP.
mysqldump является общим методом скопировать базу данных.
Создают дамп на окнах:
mysqldump -u [USER] -p [DATABASE] > [BACKUP]
Копия файл к Ubuntu и восстановлению это в Ubuntu:
mysql -u [USER] -p [DATABASE] <./[BACKUP]