тПринцип открытости/закрытости.
Что нам говорит вырезка из «википедии»
Программные сущности должны быть открыты для расширения, но закрыты для модификации.
По примеру из Первая буква S из SOLID
Мы уже там можем видеть этот принцип, программная сущность как агрегат (класс InstagramParser ) Является открытым для расширения. Но закрыт для модификации
Но не без примера!
Спижю с хабры, отлично объясняет этот принцип
<?php interface AreaInterface { public function calculateArea(); } class Rectangle implements AreaInterface { public $width; public $height; public function __construct($width, $height) { $this->width = $width; $this->height = $height; } public function calculateArea(){ $area = $this->height * $this->width; return $area; } } class Circle implements AreaInterface { public $radius; public function __construct($radius) { $this->radius = $radius; } public function calculateArea(){ $area = $this->radius * $this->radius * pi(); return $area; } } class AreaCalculator { public function calculate($shape) { $area = 0; $area = $shape->calculateArea(); return $area; } } $circle = new Circle(5); $obj = new AreaCalculator(); echo $obj->calculate($circle); ?>
В том числе и из примера который Первая буква S из SOLID
Класс InstagramParser вызывает у каждого из Resource или Handler свою реализацию. Что в принципе видно и в примере с хабра