运用java策略模式一个小程序

/**

*

*/

package Strategy;

import java.util.Arrays;

/**

* @author HuangRong

* @Funtion 定义策略

*/

public interface ComputablesStra {

public abstract void printForm();

}

/**

*

*/

package Strategy;

/**

* @author HuangRong

* @Function 为策略模式中的上下文角色,

* 提供printLetter()方法调用具体策略所重写的方法

*/

public class ControlPrint {

ComputablesStra stra;

public void setStrategy(ComputablesStra stra){

this.stra=stra;

}

public void printLetter(){

stra.printForm();

}

}

/**

*

*/

package Strategy;

import java.util.Arrays;

/**

* @author HuangRong

* @Funtion 按照大写,小写穿插的方式输出26个英文字母的实现,

* 为具体策略

*/

public class Form1 implements ComputablesStra {

@Override

public void printForm() {

// TODO Auto-generated method stub

//int m;

for(char i='a';i<='z';i++){

System.out.print(i+",");

System.out.print ((char)(i-32));

if((char)(i-32)!='Z'){

System.out.print(",");

}

}

System.out.println (";");

}

}

package Strategy;

/**

* @author HuangRong

* @Funtion 按照先大写全部输出,再小写全部输出的方式输出26个英文字母的实现,

* 为具体策略

*/

public class Form2 implements ComputablesStra {

@Override

public void printForm() {

// TODO Auto-generated method stub

char i;

for(i='A';i<='Z';i++){

System.out.print(i);

if(i!='Z'){

System.out.print(",");

}

}

System.out.print(";");

for(i='a';i<='z';i++){

System.out.print(i);

if(i!='z'){

System.out.print(",");

}

}

System.out.println(";");

}

}

/**

*

*/

package Strategy;

/**

* @author HuangRong

* @Function 策略模式的使用

*/

public class PrintMain {

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

//上下文对象

ControlPrint print=new ControlPrint();

//上下文对象使用策略一

print.setStrategy(new Form1());

System.out.println("按照大写,小写穿插的方式输出26个英文字母:");

print.printLetter();

//上下文对象使用策略二

print.setStrategy(new Form2());

System.out.println("按照先大写全部输出,再小写全部输出的方式输出26个英文字母:");

print.printLetter();

}

}

策略模式java 用例_java策略模式简单用例相关推荐

  1. 状态模式java 在线投票_Java 状态模式

    在阎宏博士的<JAVA与模式>一书中开头是这样描述状态(State)模式的:状态模式,又称状态对象模式(Pattern of Objects for States),状态模式是对象的行为模 ...

  2. java heap 查看_JAVA HEAP查看简单办法

    JAVA HEAP查看简单办法 最近在看JVM有关东西,发现一个简单和free的HEAP DUMP查看方式(基于SUN JDK) 先使用 jmap -dump:live,format=b,file=h ...

  3. java动态代理_Java代理模式及动态代理详解

    Java的动态代理在实践中有着广泛的使用场景,比如最场景的Spring AOP.Java注解的获取.日志.用户鉴权等.本篇文章带大家了解一下代理模式.静态代理以及基于JDK原生动态代理. 代理模式 无 ...

  4. java 值对象_java 中设计模式(值对象)的实例详解

    java 中设计模式(值对象)的实例详解 应用场景:在Java开发时,需要来回交换大量的数据,比如要为方法传入参数,也要获取方法的返回值,该如何能更好的进行数据的交互?这个时候就需要用到我们的值对象设 ...

  5. java state用法_Java状态模式(State模式)

    State的定义:不同的状态,不同的行为:或者说,每个状态有着相应的行为. 何时使用状态模式State模式在实际使用中比较多,适合"状态的切换".因为我们经常会使用If elsei ...

  6. java atm模拟系统_Java RPC模式开发一个银行atm模拟系统

    采用rpc模式开发一个银行atm模拟系统. 系统主要提供一个服务Card,该服务接口可以提供登录.查询.取钱.存钱等功能.服务接口的设计和实现自定义. Atm客户端功能需求: 1.ATM可以实现用户登 ...

  7. flyweight模式 java代码_享元模式(Flyweight)_java实现

    //20210120 写在前面:刚期末考试完,考了面向对象,里边儿有23个设计模式,我寻思着考完挨个儿实现一下,本文实现适配者模式 核心思想 如果在一个类中频繁创建内容相同的对象,则会使内存占用很高, ...

  8. 工厂模式 java场景_研磨设计模式之简单工厂模式(场景问题)

    简单工厂不是一个标准的设计模式,但是它实在是太常用了,简单而又神奇,所以还是需要好好掌握的,就当是对学习设计模式的热身运动吧.为了保持一致性,我们尽量按照学习其它模式的步骤来进行学习. 1  场景问题 ...

  9. java 性能 优化_Java十大简单性能优化

    java 性能 优化 关于" web scale "这个流行词有很多炒作,人们花了很多时间来重新组织他们的应用程序体系结构,以使其系统"规模化". 但是什么是扩 ...

最新文章

  1. unigui中弹出对话框原窗体是没有了_最前线 | 微信对话框“搜一搜”功能上线,独辟蹊径的腾讯打着什么算盘?...
  2. 用 Python 实现抖音上的“人像动漫化”特效,原来这么简单!
  3. android 自定义键盘字体大小,android.inputmethodservice.KeyboardView 自定义键盘 字体大小设置...
  4. 软件项目开发之 软件过程RUP初探
  5. React17事件委托的变更
  6. Vue二次封装axios为插件使用
  7. 距离度量以及python实现(一)
  8. c语言中按字节运算,C语言中位运算的巧用
  9. 树莓派安装rtl8192eu无线网卡驱动
  10. 工业级串口Modbus数据绘制曲线及上位机监控软件DotTrend
  11. laya fgui 超简单的UI框架
  12. python微信抢红包脚本_这个Python脚本牛逼了,秒抢红包就算了,还能无视撤回消息...
  13. 【零基础学Python】Day10 Python解释器
  14. win7 手把手教你将win7背景色修改为浅绿保护色【包括资源管理器的背景】
  15. mac打不开磁盘映像资源忙
  16. MDK中编译报错 Error: L6218E: Undefined symbol SystemInit (referred from startup_cmsdk_cm0.o).
  17. oracle rap,部署RAP服务器
  18. git命令提交后push失败,缺少changeID的解决办法
  19. Kafka Rest : Confluent
  20. mysql 之 FLUSH TABLES

热门文章

  1. 字符串类型、结构体、共用体、枚举、container宏、内存来源
  2. 5.spiders(文件夹)
  3. Spring3系列12-Spring AOP AspectJ
  4. iOS 5.1.1 设备不能安装AdHoc问题版本号
  5. Request.Params[CategoryID]
  6. 在ODM公司要不要跳槽到创业公司
  7. 声明为数组定义为指针,声明为指针定义为数组
  8. windows xp 下的putty不能使用小键盘的问题
  9. C两个小例子(数组与指针)
  10. MDK530编译出现ARM版本不符问题