PHPでファクトリーパターンとシングルトンパターンを実装するには

PHPファクトリーパターン実装:

ファクトリメソッドというパターンは、ファクトリクラスで別のオブジェクトのインスタンスを作成して返す、オブジェクト指向の一般的な設計パターンです。オブジェクトをnewキーワードで直接インスタンス化する必要はありません。以下に、PHPでのファクトリメソッドパターンの単純な実装例を示します。

<?php
// 定义一个接口
interface Shape {
public function draw();
}
// 实现接口的具体类
class Circle implements Shape {
public function draw() {
echo "Drawing a circle\n";
}
}
class Square implements Shape {
public function draw() {
echo "Drawing a square\n";
}
}
// 定义一个工厂类
class ShapeFactory {
public static function createShape($type) {
switch ($type) {
case 'circle':
return new Circle();
case 'square':
return new Square();
default:
throw new Exception("Unsupported shape type: $type");
}
}
}
// 使用工厂类创建对象
$circle = ShapeFactory::createShape('circle');
$circle->draw(); // 输出 "Drawing a circle"
$square = ShapeFactory::createShape('square');
$square->draw(); // 输出 "Drawing a square"

シングルトンパターンの実装:

シングルトンパターンはオブジェクト指向設計でよく使われるパターンで、クラスに単一のインスタンスがあることを保証し、そのインスタンスへのグローバルなアクセスを提供するメソッドを提供します。以下に、PHPによるシングルトンの簡単な実装例を示します。

<?php
class Database {
private static $instance;
private $connection;
private function __construct() {
// 私有构造函数,防止通过new关键字实例化类
$this->connection = mysqli_connect('localhost', 'username', 'password', 'database');
}
public static function getInstance() {
if (!self::$instance) {
self::$instance = new Database();
}
return self::$instance;
}
public function getConnection() {
return $this->connection;
}
}
// 使用单例类获取数据库连接
$db = Database::getInstance();
$connection = $db->getConnection();
// 使用$connection进行数据库操作

上の例では、Databaseクラスのコンストラクタはプライベートなので、newキーワードで直接クラスをインスタンス化することはできません。getInstance()メソッドによりクラスの唯一のインスタンスを取得し、インスタンスが存在しなければ新規インスタンスを作成して返します。そうでなければ、既存のインスタンスを直接返します。getConnection()メソッドによりデータベース接続オブジェクトを取得し、この接続オブジェクトを使用してデータベース操作を実行できます。

bannerAds