谈java中的策略设计模式

来源:互联网 发布:淘宝设置尹流量佣金 编辑:程序博客网 时间:2024/04/28 14:26

最近研究策略模式,设计情景如下:

         要求设计一个类A,我调用它,传入一个对象,要求这个类能按照我希望的方式处理并显示出该对象。这个工具类该怎样设计??你不知道别人想怎么显示,所以就算

你把show的方法实现得再好,也可能不满足要求。那么该怎么弄呢?我们应该把处理显示的方法独立出来,作为一个处理器。给出常用的处理器,同时,当所给的处理器不满足

需求时,用户可以自定义处理器。Comparator接口就是定义怎么比较的处理器,beanutil中的Converter就是定义如何处理对象类型转换的处理器,org.apache.commons.dbutils.handlers

等等都是遵循策略设计模式的例子。

     下面,我也写一个简单的小案例来演示一下策略模式。

 1、Test  测试类,调用显示工具类 

  2、Util   工具类,负责显示传入的对象

  3、Showable 接口 处理器   定义显示的方式,将要处理的对象,以用户指定的处理器来处理。

  4、给出一些常用的处理器

 5、常用的处理器不能满足要求的,可以自定义处理器。

//处理器接口

package com.itheima.strategy;public interface Showable<T>{ void show(T t);}
 
//工具类
package com.itheima.strategy;//这是一个业务类,需要处理某个对象,而处理对象要交给处理器,因为对象不确定,具体怎么处理不定,所以定一个接//口,给出几个常见的处理器。如果不够用,则可以自己创建一个处理类,来处理自己的请求。public class Util {public static  void show(Object obj,Showable shower){shower.show(obj);}}


//对字符串显示的处理器

package com.itheima.strategy;public class StringShow implements Showable<String>{@Overridepublic void show(String t) {System.out.println(t.toUpperCase());}}


//对整数显示的处理器

package com.itheima.strategy;public class IntegerShow implements Showable<Integer> {@Overridepublic void show(Integer t) {System.out.println("您输入的整数是:"+t);}}


//测试类

package com.itheima.strategy;import java.text.DateFormat;import java.util.Date;public class Test {public static void main(String[] args) {String str = "abc";Util.show(str,new StringShow());int t = 12;Util.show(t,new IntegerShow());Date date = new Date();Util.show(date, new Showable<Date>() { //提供的处理器中没有显示时间的,于是客户可以自定义处理器@Overridepublic void show(Date t) {DateFormat df = DateFormat.getDateTimeInstance();System.out.println(df.format(t));}});}}
 
//运行结果:ABC您输入的整数是:122012-9-5 23:27:58 
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 小孩子上课精力不集中怎么办 每天工作都很累压力大怎么办 重体力活搬不动怎么办 大学没参加体测怎么办 英文写的很丑怎么办 患有勃起障碍应该怎么办较好 运动过度小腿肌肉酸痛怎么办 高考有纹身是字怎么办 新生儿测听力没过关怎么办 色弱高考体检时没查出来怎么办 公司福利体检查二对半怎么办 高考体检表复印件丢了怎么办 高考体检表身高填错了怎么办 大学档案高考体检表丢了怎么办 工厂组织体检我有乙肝怎么办 我有乙肝单位组织体检怎么办? 矮腰袜子老掉怎么办 短腰袜子老下滑怎么办 中考体检结果丢了怎么办 咳嗽左胸围一处刺痛怎么办? 阴茎小父母催婚怎么办 头发扎进指甲缝怎么办 指甲缝扎流血了怎么办 中考考差了高中怎么办 骨折后我抽烟了怎么办 五年级科学考不好怎么办 考试连续考差了怎么办 客户说没考虑好怎么办 小孩生殖器痒经常用手抓怎么办 孩子在幼儿园生殖器官受伤怎么办? 被骗了3000块钱怎么办 小说 月经来了想体检怎么办 尿检的时候遇上月经期怎么办 消防兵改革那新兵怎么办 教师资格证体检有问题怎么办 检兵合格还在上学怎么办 运动后肌肉肿了怎么办 打架用力过猛肌肉疼痛怎么办 军检只要一项不合格怎么办 体检身高差一厘米怎么办 体检身高差两公分怎么办