====== Принцип разделения интерфейса (Interface Segregation Principle, ISP). ====== Четвертый SOLID принцип из пяти. Формулировка: //Клиенты не должны зависить от методов, которые они не используют.// или //Много специализированных интерфейсов лучше, чем один универсальный.// Иными словами большие, объемные интерфейсы надо разбивать на мелкие таким образом, чтобы клиенты маленьких интерфейсов знали только о тех методах которые необходимы им в работе. И чтобы при изменении метода интерфейса не должны меняться клиенты, которые этот метод не используют. Пример. //ITransformer.php:// interface ISuperTransformer { public function toCar(); public function toPlane(); public function toShip(); } //transformers.php:// class SuperTransformer implements ISuperTransformer { public function toCar(){ echo 'transform to car'; } public function toPlane(){ echo 'transform to plane'; } public function toShip(){ echo 'transform to ship'; } } class CarTransformer implements ISuperTransformer { public function toCar(){ echo 'transform to car'; } public function toPlane(){ throw new Exception('i can`t transform to plane'); } public function toShip(){ throw new Exception('i can`t transform to ship'); } } Разбиваем на несколько интерфейсов. //ITransformer.php:// interface ICarTransformer { public function toCar(); } interface IPlaneTransformer { public function toPlane(); } interface IShipTransformer { public function toShip(); } //transformers.php:// class SuperTransformer implements ICarTransformer, IPlaneTransformer, IShipTransformer { //... } class CarTransformer implements ICarTransformer { public function toCar(){ echo 'transform to car'; } }