zoukankan      html  css  js  c++  java
  • 策略模式

    最近工作使用到设计模式,在选用设计模式的时候,发觉设计模式理解不难,难的是在某个场景下选用哪个设计模式。就是设计模式的使用场景。

    策略模式

    策略模式适用情况是你已经知道了某个算法。第一步做什么,第二步做什么,第三步做什么。但是具体的三步在不同场景怎么做有不同的行为。

    代码举例:

    <?php
    
    abstract Database
    {
        abstract public function showTables();
    
        abstract public function showEngine();
    }
    
    class Content
    {
        private $dabatase;
    
        public function setDatabase(Database $database) {
            $this->database = $database;
        }
    
        public function Print() {
            $tables = $this->database->showTables();
            $engine = $this->database->showEngine();
            return [
                'table' => $tables,
                'engine' => $engine
            ];
        }
    }
    
    
    class MysqlDatabase implements Database
    {
        public function showTables() {
            return ['mysql1', 'mysql2'];
        }
    
        public function showEngine() {
            return ['innodb', 'myisam'];
        }
    
    }
    
    class PgDatabase implements Database
    {
        public function showTables() {
            return ['pg1', 'pg2'];
        }
    
        public function showEngine() {
            return ['pginno1', 'pginno2'];
        }
    
    }
    
    $content = new Content();
    $content->setDatabase(new MysqlDatabase());
    $content->Print();
    

    策略模式属于行为型模式。行为型模式主要是区分算法流程和对象的职责分配。在策略模式中,对象类界定对象行为。策略类界定算法流程。

    一句话:策略模式适用于已知算法流程的行为场景。

  • 相关阅读:
    自我介绍
    oracle 几种分页
    for update nowait
    彻底卸载SQL 2005
    如何将 SQL SERVER 彻底卸载干净
    iBatis 到 MyBatis区别
    SqlMapConfig.xml配置文件详解
    mybatis简单应用(基于配置文件)
    ibatis学习笔记一:sqlMapConfig.xml文件配置详解
    Extjs 中的添加事件总结
  • 原文地址:https://www.cnblogs.com/yjf512/p/6546490.html
Copyright © 2011-2022 走看看