博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式-策略模式
阅读量:7057 次
发布时间:2019-06-28

本文共 2919 字,大约阅读时间需要 9 分钟。

hot3.png

一,概念

策略模式:

定义了算法家族,并把算法给封装起来

策略模式只是把算法封装在一个父类中,简单工厂模式把属性和操作方法都包装在一个父类中

输入图片说明

二,贴代码目录

输入图片说明

package com.boot.lijunhao.strategy;/** * 用抽象类封装算法 * Created by lijunhao on 2017/8/16. */public abstract class Strotegy {    public abstract Double interfaceMethod(double aDouble);}
package com.boot.lijunhao.strategy;import lombok.extern.slf4j.Slf4j;/** * Created by lijunhao on 2017/8/16. */@Slf4jpublic class StrotegyA extends Strotegy{    @Override    public Double interfaceMethod(double aDouble) {        log.info("interfaceMethod在类(StrotegyA.java:13)行:"+"a算法"+aDouble);        return 1.0;    }}
package com.boot.lijunhao.strategy;import lombok.extern.slf4j.Slf4j;/** * Created by lijunhao on 2017/8/16. */@Slf4jpublic class StrotegyB extends Strotegy{    private String a;    private String b;    private StrotegyB() {    }    public StrotegyB(String a, String b) {        this.a = a;        this.b = b;    }    @Override    public Double interfaceMethod(double aDouble) {    log.info("interfaceMethod在类(StrotegyB.java:25)行:"+"b算法:"+a+b);        return 2.0;    }}
package com.boot.lijunhao.strategy;/** * Created by lijunhao on 2017/8/16. */public class StrotegyContent {    private Strotegy strotegy;    private StrotegyContent(){    }    public StrotegyContent(String type) {        switch (type) {            case "a":                //算法a                StrotegyA strotegyA = new StrotegyA();                strotegy=strotegyA;                break;            case "b":                //算法b                StrotegyB strotegyB = new StrotegyB("0.8","323");                strotegy=strotegyB;                break;            default :                //默认算法                StrotegyA strotegyc = new StrotegyA();                strotegy=strotegyc;                break;        }    }    public Double StrotegyContentInterface(double money){        double aDouble=0.0;        aDouble = strotegy.interfaceMethod(money);        return aDouble;    }}
package com.boot.lijunhao.strategy;import lombok.extern.slf4j.Slf4j;/** * Created by lijunhao on 2017/8/16. */@Slf4jpublic class Start {    public static void main(String[] args) {        StrotegyContent a = new StrotegyContent("a");        Double aDouble = a.StrotegyContentInterface(100);        log.info("main在类(Start.java:11)行:"+"a");        StrotegyContent b = new StrotegyContent("b");        Double aDoubleb = b.StrotegyContentInterface(100);        log.info("main在类(Start.java:17)行:"+"b");    }}

运行结果:

16:22:37.803 [main] INFO com.boot.lijunhao.strategy.StrotegyA - interfaceMethod在类(StrotegyA.java:13)行:a算法100.016:22:37.851 [main] INFO com.boot.lijunhao.strategy.Start - main在类(Start.java:11)行:a16:22:37.851 [main] INFO com.boot.lijunhao.strategy.StrotegyB - interfaceMethod在类(StrotegyB.java:25)行:b算法:0.832316:22:37.851 [main] INFO com.boot.lijunhao.strategy.Start - main在类(Start.java:17)行:bProcess finished with exit code 0

转载于:https://my.oschina.net/lijunhao2016/blog/1511293

你可能感兴趣的文章
Linux下实现Apache站点安全
查看>>
el表达式
查看>>
看看JDK 8能给开发者们带来什么
查看>>
严重: IOException while loading persisted sessions: java.io.EOFException
查看>>
win8升级经验谈
查看>>
搜索文件命令
查看>>
postfix+dovecot配置多域名邮件服务器
查看>>
不同型号 交换机批量备份脚本 expect
查看>>
SCCM 软件更新提示自动部署规则到达最大更新数
查看>>
部署docker-registry私有仓库
查看>>
测试学习计划(一)
查看>>
使用cronolog切割tomcat日志
查看>>
我的友情链接
查看>>
Linux基础(3)
查看>>
扫盲贴:T-SQL语句执行顺序
查看>>
shiro 过滤属性的意义
查看>>
linux中正则表达式的使用方法
查看>>
grub2配置文件
查看>>
文件压缩
查看>>
SQL中EXISTS的用法
查看>>