PHP程序员学习设计模式之策略模式(Strategy Pattern)

策略模式(Strategy Pattern)

策略模式的一个典型应用是处理程序算法和其他算法之间的互换。例如,如果你编写了创建一幅图片的代码,在一些情况下,你可能需要创建JPEG图片,而在另外一些情况下,你可能需要创建GIF文件。

策略模式的实现方法通常是通过声明一个抽象的拥有一个算法方法的基础类来实现的,而且通过继承这个基类的具体的类来实现。在代码中的一些关键点,设计模式将决定哪个具体的策略是相关的,然后实例化并使用任何相关的类。

我们的例子显示了一个下载服务如何根据访问他的Web客户端选择不同文件的策略。在它创建一个包含链接的HTML时。它将根据浏览器的操作系统的标识创建指向.tar.gz或者zip文件的下载链接。当然,这意味着两个文件都要求可以通过服务器上统一的格式访问。简单来说,假设词语“Win”存在于$_SERVER["HTTP_USER_AGENT"] 中,说明我们就在处理需要.tar.gz格式的系统。

在这个例子中,我们将使用两种策略:.tar.gz策略和zip策略,他们可以通过下面的策略层次图映射出来。


PHP程序员学习设计模式之策略模式(Strategy Pattern)_第1张图片
Strategy.png

下面的代码段将让你了解如何使用这样一个策略模式:

createLinkName("Calc101");
$stat_file_name=$fileNameObj->createLinkName("Stat2000");

print <<The following is a list of great downloads

A great calculator
The best statistics application
EOF;

下mac系统下访问这个脚本将给你如下的HTML输出:


PHP程序员学习设计模式之策略模式(Strategy Pattern)_第2张图片
strategy_mac_print.png

你可能感兴趣的:(PHP程序员学习设计模式之策略模式(Strategy Pattern))