Adapter(适配器模式)

这种模式允许使用不同的接口重构某个类,可以允许使用不同的调用方式进行调用:

<?php
 
class SimpleBook {
 
    private $author;
    private $title;
 
    function __construct($author_in, $title_in) {
        $this->author = $author_in;
        $this->title  = $title_in;
    }
 
    function getAuthor() {
        return $this->author;
    }
 
    function getTitle() {
        return $this->title;
    }
}
 
class BookAdapter {
 
    private $book;
 
    function __construct(SimpleBook $book_in) {
        $this->book = $book_in;
    }
    function getAuthorAndTitle() {
        return $this->book->getTitle().' by '.$this->book->getAuthor();
    }
}
 
// Usage
$book = new SimpleBook("Gamma, Helm, Johnson, and Vlissides", "Design Patterns");
$bookAdapter = new BookAdapter($book);
echo 'Author and Title: '.$bookAdapter->getAuthorAndTitle();
 
function echo $line_in) {
  echo $line_in."<br/>";
}

  

转载于:https://www.cnblogs.com/Czc963239044/p/7116240.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
适配器模式(Adapter Pattern)是一种结构型设计模式,它允许你将现有的类(即不兼容的类)转换为其他接口所期望的接口。适配器模式旨在使原本由于接口不兼容而不能一起工作的类可以一起工作[^1]。适配器模式通常用于系统的接口设计中,对于现有的系统,由于接口不兼容而不能满足现有的需求,但是系统的功能又不能改变,此时可以考虑采用适配器模式。 外观模式(Facade Pattern)是一种结构型设计模式,它提供了一个简化接口,使得客户端能够更方便地访问复杂系统。外观模式可以将系统的复杂性与客户端的代码分开,降低客户端的复杂度,并提高系统的可复用性[^2]。外观模式通常用在大型系统的开发中,可以将系统的各个模块进行组织,提供简化的接口给客户端使用。 下面是适配器模式和外观模式的代码范例: 适配器模式: ```python class Adaptee: def specific_request(self): return 42 class Adapter: def __init__(self, adaptee): self.adaptee = adaptee def request(self): return self.adaptee.specific_request() if __name__ == "__main__": adaptee = Adaptee() adapter = Adapter(adaptee) assert adapter.request() == 42 ``` 外观模式: ```python class SubSystem1: def method1(self): return "SubSystem1 method1" def method2(self): return "SubSystem1 method2" class SubSystem2: def method1(self): return "SubSystem2 method1" def method2(self): return "SubSystem2 method2" class Facade: def __init__(self): self.subsystem1 = SubSystem1() self.subsystem2 = SubSystem2() def operation(self): results = [] results.append("Facade initializes subsystems:") results.append(self.subsystem1.method1()) results.append(self.subsystem2.method1()) results.append("Facade orders subsystems to perform the action:") results.append(self.subsystem1.method2()) results.append(self.subsystem2.method2()) return "\n".join(results) if __name__ == "__main__": facade = Facade() print(facade.operation()) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值