• 设计模式-策略模式


    在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。
    在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。
    主要解决:在有多种算法相似的情况下,使用 if...else 所带来的复杂和难以维护。
    JAVA应用:
    java.util.Comparator
    org.springframework.core.io.Resource
    org.springframework.beans.factory.support.InstantiationStrategy
    public interface PromotionStrategy {
        void doPromotion();
    }
    public class FanXianPromotionStrategy implements PromotionStrategy{
        @Override
        public void doPromotion() {
            System.out.println("返现促销,返回的金额存放到慕课网用户的余额中");
        }
    }
    public class LiJianPromotionStrategy implements PromotionStrategy {
        @Override
        public void doPromotion() {
            System.out.println("立减促销,课程的价格直接减去配置的价格");
        }
    }
    public class ManJianPromotionStrategy implements PromotionStrategy{
        @Override
        public void doPromotion() {
            System.out.println("满减促销,满200-20元");
        }
    }
    public class PromotionActivity {
        private PromotionStrategy promotionStrategy;
    
        public PromotionActivity(PromotionStrategy promotionStrategy) {
            this.promotionStrategy = promotionStrategy;
        }
    
        public void executePromotionStrategy(){
            promotionStrategy.doPromotion();
        }
    
    }
    public class Test {
        public static void main(String[] args) {
            PromotionActivity promotionActivity618 = new PromotionActivity(new LiJianPromotionStrategy());
            PromotionActivity promotionActivity1111 = new PromotionActivity(new FanXianPromotionStrategy());
    
            promotionActivity618.executePromotionStrategy();
            promotionActivity1111.executePromotionStrategy();
        }
    }
  • 相关阅读:
    排序算法之冒泡排序
    hadoop程序启动
    开播小记
    3.3面向对象封装案例1摆家具
    3.2面向对象基础语法
    3.1类和对象
    2.12函数进阶
    2.11变量的引用_可变不可变类型_局部变量和全局变量
    2.10第二章综合应用_名片管理系统
    2.8函数基础
  • 原文地址:https://www.cnblogs.com/woodpecker-z/p/14658316.html
Copyright © 2020-2023  润新知