简单的工厂模式学习
2016-05-29 17:33
323 查看
1、抽象的操作类:
2、加法操作类:
3、减法操作类:
4、工厂类:
5、主方法:
6、运行结果:
总结:
简单的工厂模式可以将高度耦合的代码进行解耦,比如上述代码,如果需要增加乘法或者除法,只需要新增加类,集成计算抽象类,然后修改工厂模式,增加一个分支即可。
package com.hhdys.opertion; /** * Created by zhangkai on 16/5/29. */ public abstract class Operator { protected int x,y; public Operator(int x, int y) { this.x = x; this.y = y; } public abstract int getResult(); }
2、加法操作类:
package com.hhdys.opertion; /** * Created by zhangkai on 16/5/29. */ public class OperatorAdd extends Operator { public OperatorAdd(int x, int y) { super(x, y); } @Override public int getResult() { return x+y; } }
3、减法操作类:
package com.hhdys.opertion; /** * Created by zhangkai on 16/5/29. */ public class OperatorSub extends Operator { public OperatorSub(int x, int y) { super(x, y); } @Override public int getResult() { return x-y; } }
4、工厂类:
package com.hhdys.factory; import com.hhdys.opertion.Operator; import com.hhdys.opertion.OperatorAdd; import com.hhdys.opertion.OperatorSub; /** * Created by zhangkai on 16/5/29. */ public class OperationFactory { public static Operator createOpertor(int x,int y,String type){ Operator oper=null; switch (type){ case "+": oper=new OperatorAdd(x,y); break; case "-": oper=new OperatorSub(x,y); break; default: break; } return oper; } }
5、主方法:
package com.hhdys.main; import com.hhdys.factory.OperationFactory; import com.hhdys.opertion.Operator; /** * Created by zhangkai on 16/5/29. */ public class SimpleFactoryMain { public static void main(String[] args){ System.out.println("简单的工厂模式:解耦合======="); Operator oper=null; oper= OperationFactory.createOpertor(10,5,"+"); System.out.println("The '+' result is :"+oper.getResult()); oper=OperationFactory.createOpertor(10,5,"-"); System.out.println("The '-' result is :"+oper.getResult()); } }
6、运行结果:
简单的工厂模式:解耦合======= The '+' result is :15 The '-' result is :5
总结:
简单的工厂模式可以将高度耦合的代码进行解耦,比如上述代码,如果需要增加乘法或者除法,只需要新增加类,集成计算抽象类,然后修改工厂模式,增加一个分支即可。
相关文章推荐
- 《剑指offer》面试题4 替换空格为%20
- Linux下查看文件和文件夹大小
- 【Dongle】【Web】牛腩新闻发布系统之前篇
- IEEE 802.15.4协议完整中文版 - 4.1 通用描述
- 匿名内部类访问外部类中的局部变量必须是final属性
- E: GPG error: http://mirrors.oschina.net trusty-backports InRelease: Clearsigned file isn't valid, got 'NODATA' (does the network require authentication?)
- Hibernate 主键生成策略
- 关于ubuntu下无线网卡经常连不上网络的问题
- keepalived_lvs-dr实现discuz负载均衡和高可用
- android拍摄照片和从相册里选择照片
- python3学习记录——安装pyspider中lxml安装问题
- 机房收费系统整体观看
- iOS AutoLayout: 关联 Xib 和 UIView
- 可视化理解卷积神经网络-ECCV 2014
- Android TextView字符串太长进行截取,以省略号代替
- 浅谈ReactiveCocoa
- HDU 1756 Cupid's Arrow (几何问题,判定点在多边形内部)
- 数据结构(跳跃表):NOI 2004 郁闷的出纳员
- eclipse maven tomcat7 热部署
- 最小生成树大汇总