博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式之创建型--工厂模式
阅读量:4684 次
发布时间:2019-06-09

本文共 1621 字,大约阅读时间需要 5 分钟。

工厂模式	实现了创建者和调用者的分离	分类		简单工厂模式		    用来生成同一等级结构中的任意产品(对于增加新的产品,需要修改已有的代码)		工厂方法模式		    用来生成同一等级结构中的固定产品(支持增加任意产品)		抽象工厂模式		     用来生成不同产品族的全部产品(对于增加新的产品,无能为力,支持增加产品族)面向对象设计的基本原则	OCP开闭原则:一个软件的试题应当对扩展开放,对修改关闭	DIP依赖倒转原则:要针对接口编程,不要针对实现编程	LOD迪米特法则:至于你直接的朋友通信,而避免和陌生人通信核心本质是	实例化对象,用工厂方法代替new操作	将选择实现类。创建爱你对象统一管理和控制,从而将调用者跟我们的	实现类解耦简单工厂模式:	要点:简单工厂模式也叫静态工厂模式,就是工厂类一般都是用	静态的方法,通过接收的参数的不同返回不同的对象实例	对于增加的新产品无能为力	//或者是一个接口	public abstract class Operation {		public abstract float getResult(float firstNumber, float secondNumber);	}	//把符号都当做对象处理,实现此接口	public class AddOperation extends Operation {	    @Override	    public float getResult(float firstNumber, float secondNumber) {		return firstNumber+secondNumber;	    }	}	public class SubOperation extends Operation {	    @Override	    public float getResult(float firstNumber, float secondNumber) {		return firstNumber-secondNumber;	    }	}	.......还有很多一些类	//接下来需要解决的就是对象的创建问题了,既如何根据不同的情况创建不同的对象:我们正好可以通过简单工厂模式实现	//工厂,来实例化和返回指定的对象	public class OperationFactory {	    public static Operation getOperation(String quotaFlag){		Operation o = null;		switch (quotaFlag){		    case "+" :  o = new AddOperation();		    case "-" :  o = new SubOperation();		    case "*" :  o = new MulOperation();		    case "/" :  o = new DivOperation();		    default:break;		}		return o;	    }	}	OperationFactory.getOperation();//传一个值	或者在工厂类中定义多个静态的方法用于返回特定的对象工厂方法模式	要点:为了避免简单工厂模式的缺点,不完全满足OCP	工厂方法模式和简单工厂模式最大的不同在于,简单工厂模式只有一个(对于	一个项目或者一个独立模块而言)工厂类,而工厂方法模式有一组实现了相同接口的工厂类		一个产品的接口一个工厂的接口		下面实现了多组产品类和工厂类			一个产品类对应一个工厂类			每增加换一个产品就只需要增加对应该的实现工厂即可,但是还是比较复杂,			不建议使用

  

转载于:https://www.cnblogs.com/lrxvx/p/9407044.html

你可能感兴趣的文章
MySQL批量SQL插入性能优化
查看>>
定义列属性:null,default,PK,auto_increment
查看>>
用户画像展示
查看>>
pyqt pyinstaller使用说明
查看>>
C#中StreamReader读取中文出现乱码
查看>>
引用堆中的对象
查看>>
用CSS开启硬件加速来提高网站性能(转)
查看>>
使用BufferedReader的时候出现的问题
查看>>
加快页面加载速度的方法
查看>>
Oozie协作框架
查看>>
linux安装图形界面
查看>>
Android广播发送失败
查看>>
博弈论之入门小结
查看>>
解决IE8下opacity属性失效问题,无法隐藏元素
查看>>
洛谷1002 过河卒
查看>>
C#匿名函数的坑
查看>>
标记页面控件尺寸
查看>>
批处理文件中的路径问题
查看>>
appium+python 环境搭建
查看>>
WampServer下修改和重置MySQL密码
查看>>