设计模式之工厂模式

发布于 / 11个月前 - 更新于 / 11个月前


设计模式之工厂模式

工厂模式是一种常见的设计模式,主要解决接口的选择问题。

应用场景

当需要实现同一目的且有多种方式时如:
缓存的时候,到底是缓存到文件中,redis中,数据库中,其他等
日志记录时,到底是记录到文件中,数据库中,其他等。

以下实例代码就简单实现日志记录的工厂模式实现

实例代码

<?php /** --------------------首先定义一个日志记录接口-------------------- */ interface Log { public function rightLog($log); } /** ---------------------然后定义实现日子记录的实例类------------------- */ // 定义文件日志 实现接口的实例类 class fileLog implements Log { // 实现文件日志记录的函数,具体逻辑具体实现,这里演示就一个打印,下同 public function rightLog($log){ echo 'file:'.$log; } } // 定义数据库日志 实现接口的实例类 class dbLog implements Log { public function rightLog($log){ echo 'db:'.$log; } } // TODO 可以设置很多 /** ---------------------最后定义工厂类------------------- */ class LogFactory{ // 返回一个日志记录实例类 public static function log($log_type){ switch ($log_type) { case 'file': return new fileLog(); break; case 'db': return new dbLog(); break; default: return null; break; } } } // 以上就全部定义完成,接着就可以使用了,使用方式就很简单了,如下 // 数据库日志记录 LogFactory::log('db')->rightLog('log'); echo "<br/>"; // 文件日志记录 LogFactory::log('file')->rightLog('log'); ?>

本作品采用《CC 协议》,转载必须注明作者和本文链接