前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java策略模式例子_java 登录场景 策略模式

java策略模式例子_java 登录场景 策略模式

作者头像
全栈程序员站长
发布2022-10-03 16:38:07
3950
发布2022-10-03 16:38:07
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

Java的策略模式中体现了两个非常基本面向对象的原则 -封装变化的概念 -编程中使用接口,而不是对接口的实现

策略模式的定义 定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。 策略模式使这些算法在客户端调用它们的时候能够互不影响的变化

策略模式的组成

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

策略模式的编写步骤 1、对策略对象定义一个公共的接口 2、编写策略类,该类实现上面的接口 3、在使用策略对象的类中保存一个对策略对象的引用 4、在使用策略对象的类中,实现策略对象的set和get方法或者使用构造方法赋值

例子

//策略类,定义一个抽象的算法,实现计算功能 public interface Strategy {

代码语言:javascript
复制
public int calcultate(int x,int y);

}

//具体策略角色,加法角色,实现加法功能 public class AddStrategy implements Strategy{

代码语言:javascript
复制
public int calcultate(int x, int y) {
    return x+y;
}

}

//具体策略角色,减法角色,实现减法功能 public class SubtractStrategy implements Strategy{

代码语言:javascript
复制
public int calcultate(int x, int y) {

    return x-y;
}

}

//环境角色 public class Environment {

代码语言:javascript
复制
private Strategy strategy;


public Environment(Strategy strategy){

    this.strategy=strategy;
}


public void setStrategy(Strategy strategy){

    this.strategy=strategy;
}

public int calcultate(int x,int y){

    return strategy.calcultate(x, y);
}

}

//客户端 public class Client {

代码语言:javascript
复制
public static void main(String[] args) {

    AddStrategy addStrategy=new AddStrategy();
    Environment environment=new Environment(addStrategy);
    System.out.println(environment.calcultate(3, 4));



    SubtractStrategy subtractStrategy=new SubtractStrategy();
    environment=new Environment(subtractStrategy);
    System.out.println(environment.calcultate(3, 4));

}

}

策略模式有什么好处? 策略模式的好处在于你可以动态的改变对象的行为。

缺点: 客户端必须知道所有的策略类,并自行决定使用哪一个策略类 造成很多策略类,用工厂模式解决

作业:

public class Person {

代码语言:javascript
复制
private int id;

private int age;

private String name;

}

要求:假如有若干个Person对象存在一个List当中,对它们进行排序,分别按照id、age、name进行排序(正常的倒序、升序),假如年龄或者姓名重复,则按照id排序

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/197240.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年9月4日 下,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档