返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >“PHP 面向对象编程设计模式:理解 SOLID 原则及其应用”
  • 0
分享到

“PHP 面向对象编程设计模式:理解 SOLID 原则及其应用”

摘要

SOLID 原则是面向对象编程设计模式中的一组指导原则,旨在提高软件设计的质量和可维护性。由罗伯特·马丁(Robert C. Martin)提出,SOLID 原则包括: 单一职责原则(Single Responsibility Pri

SOLID 原则是面向对象编程设计模式中的一组指导原则,旨在提高软件设计的质量和可维护性。由罗伯特·马丁(Robert C. Martin)提出,SOLID 原则包括:

  1. 单一职责原则(Single Responsibility Principle,SRP):一个类应该只负责一项任务,并且这个任务应该被封装在类中。这样可以提高类的可维护性和可复用性。
class User {
  private $id;
  private $name;
  private $email;

  public function __construct($id, $name, $email) {
    $this->id = $id;
    $this->name = $name;
    $this->email = $email;
  }

  public function getId() {
    return $this->id;
  }

  public function getName() {
    return $this->name;
  }

  public function getEmail() {
    return $this->email;
  }
}

class UserRepository {
  private $connection;

  public function __construct($connection) {
    $this->connection = $connection;
  }

  public function save(User $user) {
    $stmt = $this->connection->prepare("INSERT INTO users (name, email) VALUES (?, ?)");
    $stmt->execute([$user->getName(), $user->getEmail()]);
  }

  public function find($id) {
    $stmt = $this->connection->prepare("SELECT * FROM users WHERE id = ?");
    $stmt->execute([$id]);
    $result = $stmt->fetch();

    if ($result) {
      return new User($result["id"], $result["name"], $result["email"]);
    }

    return null;
  }
}
  1. 开放-封闭原则(Open-Closed Principle,OCP):软件实体(类、模块等)应该对扩展开放,对修改关闭。这样可以提高软件的灵活性,降低软件维护成本。
interface Shape {
  public function getArea();
}

class Rectangle implements Shape {
  private $width;
  private $height;

  public function __construct($width, $height) {
    $this->width = $width;
    $this->height = $height;
  }

  public function getArea() {
    return $this->width * $this->height;
  }
}

class Circle implements Shape {
  private $radius;

  public function __construct($radius) {
    $this->radius = $radius;
  }

  public function getArea() {
    return pi() * $this->radius ** 2;
  }
}

class ShapeCalculator {
  public function calculateTotalArea($shapes) {
    $totalArea = 0;
    foreach ($shapes as $shape) {
      $totalArea += $shape->getArea();
    }

    return $totalArea;
  }
}
  1. 里氏替换原则(Liskov Substitution Principle,LSP):子类可以替换其父类而不会影响程序的正确性。这样可以提高软件的灵活性,使软件更容易重构。
class Animal {
  public function eat() {
    echo "Animal is eating.";
  }
}

class Dog extends Animal {
  public function bark() {
    echo "Dog is barking.";
  }
}

class Cat extends Animal {
  public function meow() {
    echo "Cat is meowing.";
  }
}

function feedAnimal(Animal $animal) {
  $animal->eat();
}

feedAnimal(new Dog()); // prints "Dog is eating."
feedAnimal(new Cat()); // prints "Cat is eating."
  1. 接口隔离原则(Interface Segregation Principle,ISP):应该使用多个专门的接口,而不是一个通用的接口。这样可以提高软件的可读性,降低软件维护成本。

interface Printable {
  public function print();
}

interface Scannable {
  public function scan();
}

interface Faxable {
  public function fax();
}

class Printer implements Printable {
  public function print() {
    echo "Printer is printing.";
  }
}

class Scanner implements Scannable {
  public function scan() {
    echo "Scanner is scanning.";
  }
}

class FaxMachine implements Faxable {
  public function fax() {
    echo "Fax machine is faxing.";
  }
}

class MultifunctionDevice implements Printable, Scannable, Faxable {
  public function print() {
    echo "Multifunction device is printing.";
  }

  public function scan() {

--结束END--

本文标题: “PHP 面向对象编程设计模式:理解 SOLID 原则及其应用”

本文链接: https://www.lsjlt.com/news/568107.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作