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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • UFT VB脚本

    UFT VB脚本UFTVB脚本分类: 自动化2015-07-1323:48 49人阅读 评论(0) 收藏 举报OnErrorResumeNext REMMsgbox(Err.Number)REMMsgbox(Err.Source)REMMsgbox(Err.Description)REM###############################

    2022年5月28日
    34
  • maven报错was cached in the local repository, resolution will not be reattempted until the update inter

    maven报错was cached in the local repository, resolution will not be reattempted until the update inter

    2021年5月13日
    254
  • JDK卸载和彻底删除

    JDK卸载和彻底删除第一步:点击“控制面板”。第二步:点击“卸载程序”。第三步:进入到“程序和功能”界面,找到jdk的两个程序:①java8update171(64-bit);②javaSEDevelopmentKit8update171(64-bit);右击卸载即可第四步:在“运行”中输入Regedit,打开注册表编辑器,找到HKEY_LOCAL_MACHINE/SOFTWARE/JavaSo…

    2022年6月30日
    41
  • python3.9多线程_python多线程没用

    python3.9多线程_python多线程没用什么是线程?线程也叫轻量级进程,是操作系统能够进行运算调度的最小单位,它被包涵在进程之中,是进程中的实际运作单位。线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其

    2022年7月28日
    16
  • php-curl_宝塔php开启curl扩展

    php-curl_宝塔php开启curl扩展1.开启curl扩展的前提是已配置好PHP与apache,能正常运行2.首先打开php.ini文件,找到extention=php_curl.dll,去掉前面的分号3.确定php扩展目录ext文件夹下有php_curl.dll文件4.在Apache的配置文件http.conf中添加以下内容:LoadFileD:/qizhuyun/php5.4/php5ts.dllLoadFi

    2022年8月30日
    3
  • 安卓数据转移到iphone很慢_iphone数据迁移中断怎么继续

    安卓数据转移到iphone很慢_iphone数据迁移中断怎么继续如果你刚刚从安卓手机换了新的iPhone或者其他iOS设备,可以按照下面的步骤将数据转移到新设备,实现“无缝”过渡。准备工作在安卓手机上下载安装“转移到iOS”应用,打开安卓设备上的WiFi,并将新iOS设备和安卓设备都插入电源。转移需要在iPhone激活并设置新iOS设备过程进行,如果你已经激活,需要进入“设置”>“通用”>“还原”,然后选择“抹掉所有内容和设…

    2022年9月18日
    5

发表回复

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

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