博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
策略模式
阅读量:6839 次
发布时间:2019-06-26

本文共 873 字,大约阅读时间需要 2 分钟。

hot3.png

在此模式中,算法是从复杂类提取的,因而可以方便地替换。例如,如果要更改搜索引擎中排列页的方法,则策略模式是一个不错的选择。思考一下搜索引擎的几个部分 —— 一部分遍历页面,一部分对每页排列,另一部分基于排列的结果排序。在复杂的示例中,这些部分都在同一个类中。通过使用策略模式,您可将排列部分放入另一个类中,以便更改页排列的方式,而不影响搜索引擎的其余代码。

策略模式(Strategy Pattern)

策略模式是对象的行为模式,用意是对一组算法的封装。动态的选择需要的算法并使用。

策略模式指的是程序中涉及决策控制的一种模式。策略模式功能非常强大,因为这个设计模式本身的核心思想就是面向对象编程的多形性思想。

<?php

    abstract class baseAgent { //抽象策略类

        abstract function PrintPage();

    }

    //用于客户端是IE时调用的类(环境角色)

    class ieAgent extends baseAgent {

        function PrintPage() {

            return 'IE';

        }

    }

    //用于客户端不是IE时调用的类(环境角色)

    class otherAgent extends baseAgent {

        function PrintPage() {

            return 'not IE';

        }

    }

    class Browser { //具体策略角色

        public function call($object) {

            return $object->PrintPage ();

        }

    }

    $bro = new Browser ();

    echo $bro->call ( new ieAgent () );

    

?>

在我理解中,其实就是 我要买副眼镜,我可以通过实体店,网购,代购等途径得到眼镜,最终目的都是一样的 只不过可以有许多种不同的途径,而策略模式就是意在n多种方法中 我们去选择一种最优的。

转载于:https://my.oschina.net/bo081220/blog/650502

你可能感兴趣的文章
CentOS用户及用户组管理
查看>>
yum安装mysql 5.6
查看>>
ubuntu、Centos、win2003开启snmp服务
查看>>
big endian与little endian
查看>>
单机服务器已经安装好二进制mysql5.6.20,然后开启mysql多实例
查看>>
Sys和system用户、sysdba 和sysoper系统权限、dba角色
查看>>
loadrunner的atof函数有问题,请大家慎用!!!
查看>>
[InnoDB系列] - InnoDB独立/共享表空间的转换
查看>>
【STM32 .Net MF开发板学习-24】激光防盗模型
查看>>
OpenGL编程轻松入门(二)
查看>>
[转] WinForm实现移除控件某个事件的方法
查看>>
使用PM2将Node.js的集群变得更加容易
查看>>
充满魅惑的GetType(VB2005)
查看>>
CSS hack
查看>>
ELK之日志查询、收集与分析系统
查看>>
VS NuGet使用
查看>>
对Prepared Statement 是否可以防止 SQL Injection 的实验
查看>>
第 20 章 Memcache
查看>>
解决python中文处理乱码,先要弄懂“字符”和“字节”的差别
查看>>
Linux~连接windows的ftp,unzip出现的问题
查看>>