中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

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
谢通门县| 武胜县| 云霄县| 基隆市| 丽江市| 邵阳市| 亳州市| 左贡县| 苏州市| 皋兰县| 大方县| 密云县| 泰顺县| 凯里市| 福海县| 象山县| 东山县| 郁南县| 大渡口区| 黔南| 报价| 营口市| 武汉市| 汶上县| 瑞金市| 垦利县| 阳原县| 南郑县| 扶沟县| 寻乌县| 连山| 炉霍县| 嘉兴市| 西青区| 北碚区| 正定县| 新津县| 基隆市| 新密市| 唐山市| 辽阳市|