PHP设计模式总结(一)--简单工厂模式

最近在看《大话设计模式》,打算写个系列笔记,在帮助到新手的同时可以巩固自己的知识,希望能坚持下去吧。

工厂模式的核心是创建一个工厂类,通过这个类创建所需要的对象,这样做的好处是增加了代码的可拓展性,降低了耦合度,容易修改,并且易于复用。


<?php

interface Operation{
    public function getRes($numA,$numB);
}

# 加法类
class OperationAdd implements Operation{
    public function getRes($numA,$numB){
        return $numA + $numB;
    }
}

# 减法类
class OperationSub implements Operation{
    public function getRes($numA,$numB){
        return $numA - $numB;
    }
}

# 乘法类
class OperationMul implements Operation{
    public function getRes($numA,$numB){
        return $numA * $numB;
    }
}

# 除法类
class OperationDiv implements Operation{
    public function getRes($numA,$numB){
        try {
            if ($numB == 0) {
                throw new Exception("除数不能为0", 1);
            }else{
                return $numA / $numB;
            }
        } catch (Exception $e) {
            echo "错误信息:".$e->getMessage();
        }
        
    }
}

class OperationFactory{
    public static function createOperate($operate){
        switch ($operate) {
            case '+':
                $oper = new OperationAdd();
                break;
            case '-':
                $oper = new OperationSub();
                break;
            case '*':
                $oper = new OperationMul();
                break;
            case '/':
                $oper = new OperationDiv();
                break;
        }
        return $oper;
    }
}

class Client{
    public function main(){
        $oper = OperationFactory::createOperate('+');
        $res = $oper->getRes(1,2);
        echo $res;
    }
}

$client = new Client();
$client->main();

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 设计模式基本原则 开放-封闭原则(OCP),是说软件实体(类、模块、函数等等)应该可以拓展,但是不可修改。开-闭原...
    西山薄凉阅读 3,856评论 3 14
  • 设计模式汇总 一、基础知识 1. 设计模式概述 定义:设计模式(Design Pattern)是一套被反复使用、多...
    MinoyJet阅读 3,961评论 1 15
  • 一、设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者...
    RamboLI阅读 768评论 0 1
  • 本文首发于个人博客:Lam's Blog - 谈谈23种设计模式在Android源码及项目中的应用,文章由Mark...
    格子林ll阅读 4,676评论 1 105
  • 我看过许许多多的书籍,但是对于我而言印象最深的一本书是《老人与海》。 这是一部寓意深远的古典悲剧式的小说,也一部英...
    半梦鸢尾阅读 1,171评论 1 16