JAVA实例学习一为什么要用策略模式
来源:互联网 发布:淘宝客新手如何玩鹊桥 编辑:程序博客网 时间:2024/05/16 01:44
根据进程传入的参数干不同的事情,比如传入数值1,就打印出“参数值:1”,按照C的习惯肯定是if或者switch了,所以自然有如下代码:
public class strategy {public static void main(String[] args){strategyType type = new strategyType();type.type(args[0]);}}
public class strategyType {public static void type(String args){if(args.equals("1")){System.out.println("参数值:1");//尽量简化代码,实际工作中肯定不会这么简单} else if(args.equals("2")){System.out.println("参数值:2");}}}
增加一个类型3
public class strategyType {public static void type(String args){if(args.equals("1")){System.out.println("参数值:1");} else if(args.equals("2")){System.out.println("参数值:2");} else if(args.equals("3")){System.out.println("参数值:3");}}}
以前一直都是这么干的,最多就是把if里面的代码封装成一个函数,看起来if-else内部的代码比较少一点。但是JAVA讲究开闭原则,入乡随俗嘛,另外开闭原则确实也是很有道理的,尽量不改变已有的代码吧,所以想想怎么做比较好呢
到目前为止,我理解的面向对象语言和过程化语言最大的区别就是,“尽量封装,别人只能通过接口访问”,所以不管什么策略,什么模式,先把下面的代码封装封装,首先想到的就是把每个处理封装成不同的类
public class strategy {public static void main(String[] args){strategyType1 type1 = new strategyType1();type1.type(args[0]);strategyType3 type3 = new strategyType3();type3.type(args[0]);}}
public class strategyType3 {public static void type(String args){if(args.equals("3")){System.out.println("参数值:3");}}}
这样好像有点LOWER啊,应该为main提供一个统一的接口,对main来讲type3和type1都应该面对同一个接口,因为这个接口要处理type1和type3,然后不用if else,所以type1和type3应该使用相同的接口,最终改成如下这样:
//统一的处理接口public interface type{public void typeRes(String args);}
//具体的处理类public class strategyType1 implements type{public void typeRes(String args){if(args.equals("1")){System.out.println("参数值:1");}}}//具体的处理类public class strategyType3 implements type{public void typeRes(String args){if(args.equals("3")){System.out.println("参数值:3");}}}public class strategyType{type mType;public void strategyHandle(String args){mType.typeRes(args);}public void strategySet(type typei){mType = typei;}}public class strategy {public static void main(String[] args){strategyType type = new strategyType();type.strategySet(new strategyType1());type.strategyHandle(args[0]);type.strategySet(new strategyType3());type.strategyHandle(args[0]);}}
回头再去看看书上说的策略模式,完全对上了 哈哈
阅读全文
0 0
- JAVA实例学习一为什么要用策略模式
- java策略模式实例
- JAVA实例学习一为什么要用回调
- java设计模式学习之(一)策略模式
- 策略模式的实例学习
- 设计模式实例学习-策略模式
- JAVA设计模式-策略模式应用实例
- 设计模式学习笔记(一):策略模式
- 设计模式学习(一)策略模式
- 设计模式学习(一)、策略模式
- Java设计模式(一) 策略模式
- java设计模式一策略模式
- java设计模式:一、策略模式
- java设计模式(一)-策略模式
- 策略模式原理及Java代码实例
- Java设计模式学习之一---策略模式
- java设计模式学习之策略模式
- java设计模式学习之策略模式
- Python wmi Cookbook 中文翻译
- 1.3java第一个程序HellWorld
- ABP module-zero +AdminLTE+Bootstrap Table+jQuery权限管理系统第十七节--Quartz与ABP框架Abp.Quartz及扩展
- PostgreSQL配置文件--复制
- 程序编译优化等级说明
- JAVA实例学习一为什么要用策略模式
- Solr7.1.0 安装部署(centos7)
- 二叉树的链式存储
- java的几种对象(po,dto,dao等)
- leveldb status学习
- MFC下的CRC16计算器
- 线性表的顺序存储(顺序表)
- 深度学习之数学基础 Updating
- python_subprocess_git