美文网首页
设计模式(5)-策略模式

设计模式(5)-策略模式

作者: zhglance | 来源:发表于2019-06-20 20:02 被阅读0次

策略模式指一个类的行为可以在运行时更改,这种类型的设计模式属于行为型模式。

一、需求举例:

项目中需求开发应用场景:
1.简单的项目开发由初级工程师完成;
2.中等难的项目开发由中级工程师完成;
3.高难度的项目开发由高级工程师完成;
4.难度过高的项目默认拒绝。

二、类图

三、代码实战

1.接口:Engineer.java

package com.lance.strategy;

public interface Engineer {


    default void develop(String program) {

        System.out.println("Engineer default refuse " + program);
    }
}

2.初级工程师类:JuniorEngineer.java

package com.lance.strategy;

import com.lance.strategy.Engineer;

public class JuniorEngineer implements Engineer {

    @Override
    public void develop(String program) {
        System.out.println("Junior Engineer finish " + program);

    }

}

3.中级工程师类:IntermediateEngineer.java

package com.lance.strategy;

import com.lance.strategy.Engineer;

public class IntermediateEngineer implements Engineer {

    @Override
    public void develop(String program) {
        System.out.println("Intermediate Engineer finish " + program);
    }
}

4.高级工程师类:SeniorEngineer.java

package com.lance.strategy;

import com.lance.strategy.Engineer;

public class SeniorEngineer implements Engineer {

    @Override
    public void develop(String program) {
        System.out.println("Senior Engineer finish " + program);

    }
}

5.工程师上下文类:EngineerContext.java

package com.lance.strategy;

public class EngineerContext {
    private Engineer engineer;

    public EngineerContext(Engineer engineer) {
        this.engineer = engineer;
    }

    public void develop(String program) {
        engineer.develop(program);
    }


}

6.主类:StrategyPattern.java

package com.lance.strategy;

public class StrategyPattern {

    public static void main(String[] args) {


        System.out.println("==========start==========");
        EngineerContext context = new EngineerContext(new JuniorEngineer());
        context.develop("easy program");

        System.out.println("=======================");

        context = new EngineerContext(new IntermediateEngineer());
        context.develop("middle program");

        System.out.println("=======================");

        context = new EngineerContext(new SeniorEngineer());
        context.develop("difficult program");

        System.out.println("=======================");

        context = new EngineerContext(new Engineer() {
        });
        context.develop("too difficult program");

        System.out.println("==========end==========");


    }
}

输出结果:

==========start==========
Junior Engineer finish easy program
=======================
Intermediate Engineer finish middle program
=======================
Senior Engineer finish difficult program
=======================
Engineer default refuse too difficult program
==========end==========

相关文章

  • 简说设计模式之策略模式

    前言:对于设计模式基础概念可以去看[简说设计模式之设计模式概述] 一、什么是策略模式 策略(Strategy)模式...

  • 设计模式(Swift) - 单例模式、备忘录模式和策略模式

    设计模式(Swift) - 单例模式、备忘录模式和策略模式 设计模式(Swift) - 单例模式、备忘录模式和策略模式

  • 设计模式之策略模式

    设计模式(策略模式实战) 一.分类 java的设计模式大体上分为三大类: 创建型模式(5种): 工厂方法模式,抽象...

  • 11.7设计模式-策略模式-详解

    设计模式-策略模式 策略模式详解 策略模式在android中的实际运用 1.策略模式详解 2.策略模式在andro...

  • C++笔记十一(C++设计模式)

    本周内容(1)设计模式简介(2)面向对象设计原则(3)模板方法(4)策略模式(5)观察者模式(6)装饰模式(7)桥...

  • 设计模式笔记汇总

    目录 设计原则 “依赖倒置”原则 未完待续... 设计模式 设计模式——策略模式 设计模式——装饰者模式 设计模式...

  • 设计模式[13]-策略模式-Strategy Pattern

    1.策略模式简介 策略模式(Strategy Patter)是行为型(Behavioral)设计模式,策略模式封装...

  • 设计模式-策略模式

    设计模式-策略模式 定义 策略模式(Strategy Pattern)也叫政策模式(Policy Pattern)...

  • 策略模式(详解)

    策略模式(来自HeadFirst设计模式) 今天看了 Head First 设计模式的第一个模式,居然是策略模式,...

  • 设计模式(5)-策略模式

    策略模式指一个类的行为可以在运行时更改,这种类型的设计模式属于行为型模式。 一、需求举例: 项目中需求开发应用场景...

网友评论

      本文标题:设计模式(5)-策略模式

      本文链接:https://www.haomeiwen.com/subject/bscsqctx.html