S1:适配器 Adapter
适配器 Adapter
2023-09-27 14:19:41 时间
将一个类的接口转换为用户期望的另外一个接口.适配器使得原本由于接口不兼容而不能一起工作的类可以一起工作
UML:
一.类适配器:
class A { public function methodA() { .............. } } class Adapter extends A { private $objectA; public function methodB() { echo 'Append data'; } } 调用: $a = new Adapter(); $a->methodA(); $a->methodB();
二.对象适配器:
const HOST = '127.0.0.1'; const USER = 'root'; const PASSWORD = 'root'; const DB_NAME = 'test'; interface Db { public function connect(); public function select($sql); } class MysqlDb implements Db { protected $conn; public function connect() { $this->conn = mysql_connect(HOST, USER, PASSWORD); mysql_select_db(DB_NAME, $this->conn); } public function select($sql) { $res = mysql_query($sql, $this->conn); $data = array(); while ($row = mysql_fetch_assoc($res)) { $data[] = $row; } return $data; } } class MysqliDb implements Db { protected $conn; public function connect() { $this->conn = mysqli_connect(HOST, USER, PASSWORD); mysqli_select_db($this->conn, DB_NAME); } public function select($sql) { $res = mysqli_query($this->conn, $sql); $data = array(); while ($row = mysqli_fetch_assoc($res)) { $data[] = $row; } return $data; } } class DbAdapter { const MYSQL = 'MysqlDb'; const MYSQLI = 'MysqliDb'; protected $db; public function __construct($type) { $this->db = new $type(); } public function connectDb() { $this->db->connect(); } public function select($sql) { return $this->db->select($sql); } } $db = new DbAdapter(DbAdapter::MYSQLI); $db->connectDb(); var_dump($db->select("select * from test"));
三.接口适配器
要求现有类ExistClass适配接口DemoInterface
现有类: class ExistClass { } interface DemoInterface { public function method(); } // 适配的新类 class NewClass extends ExistClass implements DemoInterface { public function method() { // TODO: Implement method() method. } }
相关文章
- 结构型模式—适配器模式
- 设计模式:适配器模式
- 用最简单的例子理解适配器模式(Adapter Pattern)
- XamarinAndroid组件教程RecylerView自定义适配器动画
- XamarinAndroid组件教程RecylerView适配器设置动画
- 适配器设计模式
- [设计模式] 7 适配器模式 adapter
- Java 设计模式之适配器模式,Java 类适配器,Java 对象适配器
- java面向接口编程之适配器模式
- 装饰者模式vs适配器模式
- 适配器模式(Adapter):类适配器、对象适配器
- 适配器之值传递(fragment适配器获得listview控件对象)
- 这么久了适配器模式还不会?
- 设计模式(一)适配器模式
- ORA-12560: TNS: 协议适配器错误的解决方法
- Java最优良的Adapter模式:适配器模式
- 智能服务器适配器:成功的关键要素
- 从王者荣耀看设计模式(九.适配器模式)
- Apater适配器模式(结构型模式)
- 面试官:设计模式中的适配器模式是什么?