i
Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| i [2022/03/09 13:29] – создано chifek | i [2023/09/14 06:06] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Принцип разделения интерфейса (Interface Segregation Principle, ISP). ====== | ====== Принцип разделения интерфейса (Interface Segregation Principle, ISP). ====== | ||
| + | |||
| + | Четвертый SOLID принцип из пяти. | ||
| + | Формулировка: | ||
| + | |||
| + | // | ||
| + | |||
| + | или | ||
| + | |||
| + | // | ||
| + | |||
| + | |||
| + | Иными словами большие, | ||
| + | маленьких интерфейсов знали только о тех методах которые необходимы им в работе. | ||
| + | И чтобы при изменении метода интерфейса не должны меняться клиенты, | ||
| + | |||
| + | Пример. | ||
| + | |||
| + | // | ||
| + | |||
| + | < | ||
| + | interface ISuperTransformer | ||
| + | { | ||
| + | public function toCar(); | ||
| + | public function toPlane(); | ||
| + | public function toShip(); | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | // | ||
| + | |||
| + | < | ||
| + | class SuperTransformer implements ISuperTransformer { | ||
| + | public function toCar(){ | ||
| + | echo ' | ||
| + | } | ||
| + | |||
| + | public function toPlane(){ | ||
| + | echo ' | ||
| + | } | ||
| + | |||
| + | public function toShip(){ | ||
| + | echo ' | ||
| + | } | ||
| + | } | ||
| + | |||
| + | class CarTransformer implements ISuperTransformer { | ||
| + | public function toCar(){ | ||
| + | echo ' | ||
| + | } | ||
| + | |||
| + | public function toPlane(){ | ||
| + | throw new Exception(' | ||
| + | } | ||
| + | |||
| + | public function toShip(){ | ||
| + | throw new Exception(' | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | Разбиваем на несколько интерфейсов. | ||
| + | |||
| + | // | ||
| + | |||
| + | < | ||
| + | interface ICarTransformer { | ||
| + | public function toCar(); | ||
| + | } | ||
| + | |||
| + | interface IPlaneTransformer { | ||
| + | public function toPlane(); | ||
| + | } | ||
| + | |||
| + | interface IShipTransformer { | ||
| + | public function toShip(); | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | // | ||
| + | |||
| + | < | ||
| + | class SuperTransformer implements ICarTransformer, | ||
| + | //... | ||
| + | } | ||
| + | |||
| + | class CarTransformer implements ICarTransformer { | ||
| + | public function toCar(){ | ||
| + | echo ' | ||
| + | } | ||
| + | } | ||
| + | </ | ||
i.1646832573.txt.gz · Last modified: 2023/09/14 06:06 (external edit)