zoukankan      html  css  js  c++  java
  • 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();

        

      

  • 相关阅读:
    解惑开源项目协作流程
    结合webpack 一步一步实现懒加载的国际化简易版方案
    SEO优化之——hreflang(多语言网站优化)
    pandas数据分析常用
    多任务: 多进程与多线程
    linux基础知识
    python常用模块之sys, os, random
    递归函数(初级难点)
    内置函数
    函数
  • 原文地址:https://www.cnblogs.com/xiaocaoer/p/6508847.html
Copyright © 2011-2022 走看看