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

java策略模式例子_java 登录场景 策略模式Java的策略模式中体现了两个非常基本面向对象的原则-封装变化的概念-编程中使用接口,而不是对接口的实现策略模式的定义定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。策略模式使这些算法在客户端调用它们的时候能够互不影响的变化策略模式的组成抽象策略角色–策略类,通常由一个接口或者抽象类实现具体策略角色–包装了相

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

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

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

策略模式的组成

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

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

例子

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

public int calcultate(int x,int y);

}

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

public int calcultate(int x, int y) {
    return x+y;
}

}

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

public int calcultate(int x, int y) {

    return x-y;
}

}

//环境角色
public class Environment {

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 {

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 {

private int id;

private int age;

private String name;

}

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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • php代码混淆加密算法_java代码混淆加密

    php代码混淆加密算法_java代码混淆加密functionRandAbc($length=””){//返回随机字符串$str=”ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz”;returnstr_shuffle($str);}$filepath=’index.php’;$path_parts=

    2022年10月2日
    4
  • Python动态爬虫爬取京东商品评论[通俗易懂]

    Python动态爬虫爬取京东商品评论[通俗易懂]Python动态爬虫爬取京东商品评论1.概述京东商城是Python爬虫初学者试手的经典平台,反爬虫程度较低,但评论采取了动态加载的方式,爬取京东商品评论是学习动态爬虫的一个极佳方法。动态爬虫,即针对动态加载JSON文件网页的爬虫,其原理与静态爬虫没有本质区别,只是不爬取所见的静态目标网页,而是寻找该网页所加载的JSON文件,爬取JSON文件中的内容。2.目标观察观察京东具体商品评论页面:点击商品评价页:发现商品评价翻页的url不改变,可推测出其采用动态加载的方式,同时,会发现直接获取该

    2022年7月26日
    10
  • charles乱码怎么解决_抓包精灵乱码

    charles乱码怎么解决_抓包精灵乱码前言当使用Charles抓包时,发现数据都是乱码,这时需要安装证书解决办法1.点击charles窗口,点击左上角Help->SSLProxying→InstallCharles

    2022年7月30日
    13
  • 金蝶服务器设置(金蝶系统登录服务器)

    金蝶如何登录服务器配置内容精选换一换华为云帮助中心,为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档,帮助您快速上手使用华为云服务。如何修改集群节点的NTP服务器地址?集群访问OBS上报403异常。集群Master节点NTP时间与集群外节点的NTP服务器时间不同步,时间相差超过15min,导致集群访问OBS时鉴权失败,上报403异常。cat/…

    2022年4月15日
    188
  • maven详细教程_maven的安装与配置

    maven详细教程_maven的安装与配置学习maven的使用,看到一篇很实用的入门教程(菜鸟级入门)2007-08-2814:01:04标签:maven职场休闲一、前言早就知道maven在java项目的管理方面名声显赫,于是就想着学习掌握之,于是查阅了大量文档。发现这些文档的作者都是java的大腕,大多都是站在掌握了一定maven基础的角度上进行介绍,让我这初学者看的云里雾里不…

    2025年10月7日
    4
  • 在Android中调用WebService

    在Android中调用WebService

    2021年8月28日
    71

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号