Java大数据平台开发 学习笔记(54)—— java设计模式(策略模式)知识汇总

一,前言:

策略模式的注意事项和细节:

  1. 策略模式的核心思想是:多用组合/聚合,少用继承。
  2. 遵循 ”开闭原则“,同时避免了多重转换语句。
  3. 提供了可以替换继承的办法,使得代码易于切换、易于理解、易于扩展。

二,策略模式:

2.1,UML图:

在这里插入图片描述

2.2、代码实例:

Step 1) 创建 Duck 抽象类:

public abstract class Duck{
    
    
    FlyBehavior flyBehavior;
    QuackBehavior quackBehavior;

    public abstract void dispaly();

    public void quack(){
    
    
        System.out.println("鸭子嘎嘎叫~~");
    }

    public void swim(){
    
    
        System.out.println("鸭子会游泳~~");
    }

    public void fly(){
    
    
        if(flyBehavior != null) {
    
    
            flyBehavior.fly();
        }
    }

    public void setFlyBehavior(FlyBehavior flyBehavior) {
    
    
        this.flyBehavior = flyBehavior;
    }

    public void setQuackBehavior(QuackBehavior quackBehavior) {
    
    
        this.quackBehavior = quackBehavior;
    }
}

Step 2) 创建 PekingDuck 实现类:

class PekingDuck extends Duck {
    
    
    public PekingDuck() {
    
    
        flyBehavior = new BadFlyBehavior();
    }

    @Override
    public void dispaly() {
    
    
        System.out.println("这是北京鸭子~~");
    }
}

Step 3) 创建 WilDuck 实现类:

class WilDuck extends Duck {
    
    
    public WilDuck() {
    
    
        flyBehavior = new GoodFlyBehavior();
    }

    @Override
    public void dispaly() {
    
    
        System.out.println("这是野鸭~~");
    }
}

Step 4) 创建 ToyDuck 实现类:

class ToyDuck extends Duck {
    
    
    public ToyDuck() {
    
    
        flyBehavior = new NoFlyBehavior();
    }

    @Override
    public void dispaly() {
    
    
        System.out.println("这是玩具鸭~~");
    }

    public void quack(){
    
    
        System.out.println("玩具鸭不会嘎嘎叫~~");
    }

    public void swim(){
    
    
        System.out.println("玩具鸭不会游泳~~");
    }
}

Step 5) 创建 FlyBehavior 接口:

public interface FlyBehavior {
    
    
    void fly();
}

Step 6) 创建 NoFlyBehavior 实现类:

class NoFlyBehavior implements FlyBehavior{
    
    
    @Override
    public void fly() {
    
    
        System.out.println("不会飞翔!");
    }
}

Step 7) 创建 BadFlyBehavior 实现类:

class BadFlyBehavior implements FlyBehavior{
    
    
    @Override
    public void fly() {
    
    
        System.out.println("飞翔技术一般!");
    }
}

Step 8) 创建 GoodFlyBehavior 实现类:

class GoodFlyBehavior implements FlyBehavior {
    
    
    @Override
    public void fly() {
    
    
        System.out.println("飞行技术高超!");
    }
}

Step 9) 创建 QuackBehavior 接口:

public interface QuackBehavior {
    
    
    void quack();
}

Step 10) 创建 main 方法:

public class Client {
    
    
    public static void main(String[] args) {
    
    
        WilDuck wilDuck = new WilDuck();
        wilDuck.fly();

        ToyDuck toyDuck = new ToyDuck();
        toyDuck.fly();

        PekingDuck pekingDuck = new PekingDuck();
        pekingDuck.fly();

        System.out.println("===================================");
        pekingDuck.setFlyBehavior(new NoFlyBehavior());
        System.out.println("改变了北京鸭的飞行能力,北京鸭的实际飞行能力!");
        pekingDuck.fly();
    }
}


•由 ChiKong_Tam 写于 2020 年 10 月 23 日

猜你喜欢

转载自blog.csdn.net/qq_42209354/article/details/109247208