什么是适配器模式
定义:将一组特定的行为和算法封装成类,以适应某些特定的上下文环境,并让它们可以相互替换,这种模式就是策略模式。
简单理解就是 有n个做法供你选择,根据你的需要选择某个策略得到结果
为什么要用策略模式
使用设计模式之后,我们的代码冗余和耦合度变低,每个策略模块完成对应的功能。
当然缺点就是一个功能我们就要响应制作一个策略类,但是我们统观MVC架构当中(ThinkPHP,Laravel),一个控制器对应一个视图,其实也是策略设计模式的体现了。
示例
业务场景
在一个电商网站中,根据用户的性别来展示不同的商品。我们有展示商品的类目(function showCategory())和展示的广告(function showAd())
实现方式
首先我们要定义一个接口,接口中定义需要实现的方法。
然后分别定义不同的类来实现接口中的方法。
最后在根据用户的不同,分别 new 不同的方法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
| <?php
interface UserInterface {
public function showAd();
public function showCategory(); }
class MaleUser implements UserInterface {
public function showAd() { echo "电子产品"; }
public function showCategory() { echo "电子数码"; } }
class FemaleUser implements UserInterface {
public function showAd() { echo "化妆品"; }
public function showCategory() { echo "服装分类"; } }
if ($_GET['male']) { $user = new MaleUser(); } else { $user = new FemaleUser(); } $user->showAd();
|
小结
总的来说,我们在开发中的设计原则如下:
(1).找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起
(2).针对接口编程,不针对实现编程
(3).多用组合,少用继承。