Вторая буква O из SOLID

тПринцип открытости/закрытости.
Что нам говорит вырезка из «википедии»

Программные сущности должны быть открыты для расширения, но закрыты для модификации.

По примеру из Первая буква 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 свою реализацию. Что в принципе видно и в примере с хабра

Loading

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *