91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

php工廠模式和單例模式怎么實現

PHP
小億
83
2023-10-13 18:48:08
欄目: 編程語言

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()方法可以獲取數據庫連接對象,然后可以使用該連接對象進行數據庫操作。

0
沐川县| 昭觉县| 西青区| 汉沽区| 凌海市| 永胜县| 新巴尔虎左旗| 临漳县| 顺义区| 旺苍县| 德兴市| 双城市| 碌曲县| 汪清县| 姚安县| 庆云县| 柳江县| 新津县| 革吉县| 银川市| 镇安县| 瓮安县| 宁强县| 蓬安县| 隆化县| 乌恰县| 水富县| 景宁| 玉林市| 固镇县| 云霄县| 桦甸市| 宁波市| 高邮市| 昭觉县| 闽清县| 任丘市| 霞浦县| 健康| 闸北区| 邵东县|