• 策略模式


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

    策略模式

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

    代码举例:

    <?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();
    

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

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

  • 相关阅读:
    Robot Framework-取出接口返回的字段
    利用VBA宏批量解决Word中图片大小、居中设置
    封装和继承
    Shiro的学习
    Redis集群搭建
    Mysql主从架构
    idea修改maven的默认配置不生效
    Mybatis笔记
    【python】文件的读写方法(r;r+;rb;w;w+;wb;a;a+;ab)
    【Python】Xpath语法&示例
  • 原文地址:https://www.cnblogs.com/yjf512/p/6546490.html
Copyright © 2020-2023  润新知