工厂模式和策略模式是两种不同的设计模式,它们的目的和应用场景也不同。
以下是一个简单的PHP工厂模式示例:
<?php
interface Animal {
public function sound();
}
class Dog implements Animal {
public function sound() {
echo "Woof!";
}
}
class Cat implements Animal {
public function sound() {
echo "Meow!";
}
}
class AnimalFactory {
public static function createAnimal($type) {
switch ($type) {
case 'dog':
return new Dog();
case 'cat':
return new Cat();
default:
throw new Exception("Invalid animal type.");
}
}
}
$animal = AnimalFactory::createAnimal('dog');
$animal->sound(); // Output: Woof!
$animal = AnimalFactory::createAnimal('cat');
$animal->sound(); // Output: Meow!
以下是一个简单的PHP策略模式示例:
<?php
interface SortingStrategy {
public function sort(array $data): array;
}
class QuickSort implements SortingStrategy {
public function sort(array $data): array {
// 实现快速排序算法
return $sortedData;
}
}
class MergeSort implements SortingStrategy {
public function sort(array $data): array {
// 实现归并排序算法
return $sortedData;
}
}
class SortingContext {
private $strategy;
public function __construct(SortingStrategy $strategy) {
$this->strategy = $strategy;
}
public function setStrategy(SortingStrategy $strategy) {
$this->strategy = $strategy;
}
public function sortData(array $data): array {
return $this->strategy->sort($data);
}
}
$data = [3, 1, 2, 5, 4];
$context = new SortingContext(new QuickSort());
$sortedData = $context->sortData($data);
$context->setStrategy(new MergeSort());
$sortedData = $context->sortData($data);
总结: 工厂模式和策略模式是两种不同的设计模式,工厂模式用于创建对象,而策略模式用于封装算法并动态选择使用。
上一篇:dede 运行php文件
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站