• php设计模式之工厂模式


    最近一直很迷惑,设计模式到底是干嘛的,有什么用呢!所以专门花时间学习并整理了设计模式的好处等等!那今天先给大家一起分享下我所理解的设计模式--工厂模式!

    1. 先说说优点:
      1. 减少了工作量
      2. 方便扩展维护

    2. 再说说其实现方式:

        给2个类大家好好看一下,理解一下其内容: 

    3. 在这个类里,如果用户需要再添加一个数据库联接,比如oracle,是否需要修改Factory里的createDb的内容,这样的话,php还好,但如果在C/JAVA里,修改编译是
      需要很长时间的,所以这种方法对于开发的话,还是不太容易扩展。
      <?php /** * 简单工厂模式 */ //共同接口 interface db{ function conn(); } //服务器端开发(不知道会被谁调用) class dbmysql implements db{ public function conn(){ echo "mysql"; } } class dbsqlite implements db{ public function conn(){ echo "sqlite"; } } class Factory{ public static function createDB( $type ){ if($type == 'mysql'){ return new dbmysql(); }else if( $type == 'sqllite' ){ return new dbsqlite(); }else{ throw new Exception("错误的数据库连接",1); } } } //客户端 首先看不到dbmysql和dbsqlite $mysql = Factory::createDB("mysql"); $mysql->conn();
      我们再来看看真正的工厂模式,大家可以看看“//服务器端添加oracle类===”这下面的内容,添加了一个oracel连接,只是增加了两个扩展,这样代码更容易扩展和维护。
      <?php /** * 工厂模式 */ //共同接口 interface db{ function conn(); } interface Factory{ function createDB(); } //服务器端开发(不知道会被谁调用) class dbmysql implements db{ public function conn(){ echo "mysql"; } } class dbsqlite implements db{ public function conn(){ echo "sqlite"; } } class mysqlFactory implements Factory{ public function createDB(){ return new dbmysql(); } } class sqliteFactory implements Factory{ public function createDB(){ return new dbsqlite(); } } //服务器端添加oracle类=== //前面的代码不用动 class dboracle implements db{ public function conn(){ echo "oracle"; } } class oracleFactory implements Factory{ public function createDB(){ return new dboracle(); } } //客户端 首先看不到dbmysql和dbsqlite $fact = new oracleFactory(); $db = $fact->createDB(); $db->conn();

        

      

  • 相关阅读:
    ParksLink修改密码
    ORA-01940:无法删除当前已链接的用户
    imp导入数据的时候报错:ORA-01658: 无法为表空间 MAXDATA 中的段创建 INITIAL 区
    Linux下查看日志用到的常用命令
    大批量数据高效插入数据库表
    线程中断:Thread类中interrupt()、interrupted()和 isInterrupted()方法详解
    CyclicBarrier、CountDownLatch、Callable、FutureTask、thread.join() 、wait()、notify()、Condition
    Mysql全文索引
    Docker 镜像的常用操作
    Docker 入门
  • 原文地址:https://www.cnblogs.com/xiaocaoer/p/6508847.html
Copyright © 2020-2023  润新知