栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

设计模式之策略模式在项目中的应用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

设计模式之策略模式在项目中的应用

策略模式简介:
策略模式作为一种软件设计模式,指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法。比如每个人都要“交个人所得税”,但是“在美国交个人所得税”和“在中国交个人所得税”就有不同的算税方法。

策略模式组成:
—抽象策略角色: 策略类,通常由一个接口或者抽象类实现。
—具体策略角色:包装了相关的算法和行为。
—环境角色:持有一个策略类的引用,最终给客户端调用。

上面内容来自百度百科!!!

策略模式实现:
下面的内容根据实际项目中策略模式的应用修改而来,只参考代码结构,和原有业务毫无关系。

public class TravelContext {
    final static String PLANE = "PLANE";
    final static String BUS = "BUS";
    final static String TRAIN = "TRAIN";

    public static void main(String[] args) throws Exception {
        TravelTemplate template = TravelTemplate.getInstance(PLANE);
        
        template.validate("123","张三");
        template.setPhone("123456789");
        
        template.pay();
    }
}
public abstract class TravelTemplate{
    public static final TravelTemplate getInstance(String carType) throws Exception {
        switch (carType){
            case "BUS":
                return TravelStrategyMode.Bus.getInstance();
            case "PLANE":
                return TravelStrategyMode.Plane.getInstance();
            case "TRAIN":
                return TravelStrategyMode.Train.getInstance();
            default:
                throw new Exception("不支持的出行方式!");
        }
    }


    
    public void validate(String certNo,String name){
        //省略一堆业务逻辑
        System.out.println("校验成功!");
    }

    public void setPhone(String phone){
        //省略一堆业务
        System.out.println("预留手机号已保存!");
    }

    
    abstract void pay();
}
public class TravelStrategyMode {
    public static class Bus extends TravelTemplate{
        static Bus getInstance(){
            return new Bus();
        }

        private Bus(){
        }

        public void pay(){
            System.out.println("需要支付100元!");
        }
        
    }

    public static class Train extends TravelTemplate{
        static Train getInstance(){
            return new Train();
        }

        private Train(){
        }

        public void pay(){
            System.out.println("需要支付500元!");
        }
        
    }

    public static class Plane extends TravelTemplate{
        static Plane getInstance(){
            return new Plane();
        }

        private Plane(){
        }

        public void pay(){
            System.out.println("需要支付1000元!");
        }
        
    }
}

结果:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/873973.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号