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

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

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

  • 相关阅读:
    20201206贪心法1总结
    20201105枚举课后总结
    【题解】P1057 传球游戏
    人生哲理100句整理
    [计蒜客]棋子等级 题解
    整式的乘法相关公式(随着后续学习持续更新)
    计算几何公式(随着后续学习持续更新)
    mybatis中foreach在不同场景下的使用整理
    Java导出Excel文件详解
    java单元测试
  • 原文地址:https://www.cnblogs.com/yjf512/p/6546490.html
Copyright © 2011-2022 走看看