php工厂模式和策略模式区别,php 工厂模式和策略模式区别

工厂是创建型模式,它的作用就是创建对象;

策略是行为型模式,它的作用是让一个对象在许多行为中选择一种行为;

cfed7f27bef193accd01353c3b3f2310.png

关注点不一样

一个关注对象创建

一个关注行为的封装(推荐学习:PHP视频教程)

解决不同的问题

工厂模式是创建型的设计模式,它接受指令,创建出符合要求的实例;它主要解决的是资源的统一分发,将对象的创建完全独立出来,让对象的创建和具体的使用客户无关。主要应用在多数据库选择,类库文件加载等。

策略模式是为了解决的是策略的切换与扩展,更简洁的说是定义策略族,分别封装起来,让他们之间可以相互替换,策略模式让策略的变化独立于使用策略的客户。

工厂相当于黑盒子,策略相当于白盒子;

实例:<?php

header('content-type:text/html;charset=utf-8');

abstract class Product {

abstract public function getName();

}

class ProductA extends Product {

public function getName() {

echo '这是A商品
';

}

}

class ProductB extends Product {

public function getName() {

echo '这是B商品
';

}

}

//工厂模式

class ProductFactory {

public static function create($num) {

switch($num) {

case 1:

return new ProductA();

case 2:

return new ProductB();

}

return null;

}

}

//传递不同的参数获取不同的对象

$obj=ProductFactory::create(1);

$obj->getName(); //这是A商品

$obj=ProductFactory::create(2);

$obj->getName(); //这是B商品

//=======策略模式

header('content-type:text/html;charset=utf-8');

interface IStrategy {

function ontheway();

}

class Walk implements IStrategy {

public function ontheway() {

echo '走着去
';

}

}

class Bick implements IStrategy {

public function ontheway() {

echo '骑自行车去
';

}

}

class Bus implements IStrategy {

public function ontheway() {

echo '坐巴士去
';

}

}

//策略模式,传递不同的参数,调用不同的策略

class Strategy{

public function getWay(IStrategy $obj) {

$obj->ontheway();

}

}

$obj=new Strategy();

$obj->getWay(new Walk); //走着去

$obj->getWay(new Bick); //骑自行车去

$obj->getWay(new Bus); //坐巴士去

更多PHP相关技术文章,请访问PHP图文教程栏目进行学习!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值