简单工厂模式
来源:互联网 发布:不用网络的小说 编辑:程序博客网 时间:2024/05/29 03:49
简单工厂模式:
简单工厂模式主要通过定义一个工厂类来实例化其他的,而这些其他类通常继承自同一个父类。
简单工厂模式组成:
简单工厂模式主要有三部分组成:
1、工厂类:这是工厂模式的核心,用于创建其他类的实例。
2、抽闲类或接口:简单工厂所实例化的所有类的父类。
3、具体类:抽象类或接口的子类用于实现具体的逻辑操作。
用一个简单的计算器作为例程代码:
抽象类 Operation
/* 抽象类 Operation */public abstract class Operation { private double NumberA = 0; private double NumberB = 0; public double GetNumberA() { return NumberA; } public double GetNumberB(){ return NumberB; } public void SetNumberA(double NumberA){ this.NumberA = NumberA; } public void SerNumberB(double NumberB){ this.NumberB = NumberB; } /* 抽象方法 */ abstract double GetResult();}
具体实现类 OperationAdd:
public class OperationAdd extends Operation { public double GetResult() { return GetNumberA()+GetNumberB(); }}
public class OperationDel extends Operation { public double GetResult(){ return this.GetNumberA() - this.GetNumberB(); }}
工厂类 Factory:
public class Factry { public static Operation createOperation(String operation){ Operation oper = null; switch (operation) { case "+": oper = new OperationAdd(); break; case "-": oper = new OperationDel(); break; default: break; } return oper; }}
客户端使用 Cucl:
public class Cucl { public static void main(String[] args) { // TODO Auto-generated method stub Operation operation = Factry.createOperation("+"); operation.SetNumberA(5); operation.SerNumberB(4); double Result = operation.GetResult();}
uml类图:
使用简单工厂类,首先将计算方法和显示分离,然后将计算实例在一个工厂中实现。在增加新的运算时,不需要了解或修改以有的运算类,直接增加新的继承自抽象类的运算方法,然后在工厂类的switch中增加一个分支。
分析:
简单工厂模式最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。缺点在于增加新的算法,需要增加新的算法类的同时,还要向运算工厂类的方法里加”Case”的条件分支,违背了“对扩展开放,对修改封闭的原则”。
阅读全文
1 0
- 工厂模式-简单工厂
- 工厂模式-简单工厂
- 工厂模式-简单工厂模式
- 工厂模式-简单工厂模式
- 简单工厂模式,工厂模式
- 工厂模式-简单工厂模式
- 简单工厂模式,工厂模式
- 简单工厂、工厂模式、抽象工厂模式
- 简单工厂、工厂模式、抽象工厂模式
- 简单工厂&工厂模式&抽象工厂模式
- 简单工厂和工厂模式
- 简单工厂和工厂模式
- 1,工厂模式--简单工厂
- 简单工厂和工厂模式
- 简单工厂,工厂模式,抽象工厂
- 简单工厂,工厂模式,抽象工厂
- 简单工厂、工厂方法、抽象工厂模式
- 简单工厂、工厂模式和抽象工厂
- Maven中父工程的搭建
- 浏览器跨域问题解决方案汇总
- linux系统常用的shell命令
- apio 2016 T1
- 如何直接把table转换成Excel导出
- 简单工厂模式
- 第一场个人训练赛——C-计算球体积(HDU 2002)
- iOS Pokemon Go试玩,未越狱的iPhone伪造GPS定位信息
- java 值传递 数组传递
- Going Home POJ
- 怎样让tomcat启动就运行我的写的java类,即游戏服务端?
- Linux系统编程——线程私有数据
- Object.assign is not a function(解决)
- 标题