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

    策略模式

    百度百科定义:策略模式是指对一系列的算法定义,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。

    组成:
    —抽象策略角色: 策略类,通常由一个接口或者抽象类实现。
    —具体策略角色:包装了相关的算法和行为。
    —环境角色:持有一个策略类的引用,最终给客户端调用。
    优点:
    1、可以动态的改变对象的行为。
    2、使用策略模式可以避免使用多重条件转移语句。
    3、策略模式提供了可以替换继承关系的办法。
    缺点:
    1、客户端必须知道所有的策略类,并自行决定使用哪一个策略类。
    2、策略模式造成很多的策略类,每个具体策略类都会产生一个新类。
    具体应用:
    简单一个例子:不同时期的人用不同的笔写字。
    类图:

    代码实现:

    public class Person {
        public Pen pen;
    
        public void setPen(Pen pen) {
            this.pen = pen;
        }
    
        public void doJob(){
            pen.write();
        }
    }
    public class Ancient extends Person {
        public Ancient() {
            pen = new Brush();
            System.out.println("古代人");
        }
    }
    public class Modern extends Person{
        public Modern() {
            pen = new Pencil();
            System.out.println("现代人");
        }
    }
    public interface Pen {
        void write();
    }
    public class Pencil implements Pen {
        @Override
        public void write() {
            System.out.println("用铅笔写字");
        }
    }
    public class Brush implements Pen {
        @Override
        public void write() {
            System.out.println("用毛笔写字");
        }
    }
    public class Test {
        public static void main(String[] args) {
            Person person = new Ancient();
            person.doJob();
            person.setPen(new Pencil());
            person.doJob();
        }
    }

    输出:

    以上就是策略模式,多种不同解决方案动态切换,起到改变对象行为的效果。
  • 相关阅读:
    python无意中发现的
    mysql 中关于周和月份的表示
    列表表达式
    python编码
    bugfree安装
    python练习题代码
    根据用户名或者厂商名称生成相关的弱口令
    获取QQ企业邮箱通讯录PY脚本
    SQL注入POC
    乌云精华漏洞爬取匹配
  • 原文地址:https://www.cnblogs.com/foreverYoungCoder/p/7743343.html
Copyright © 2011-2022 走看看