大话设计模式观后感之----工厂模式

大话设计模式观后感之----工厂模式

大话设计模式观后感之----简单工厂模式

最近在看大话设计模式,计划针对梅州模式写一些简单的观后感,方便加深印象,可能表达不当,看到的朋友各自斟酌

工厂模式

简单工厂模式又称静态工厂方法模式。重命名上就可以看出这个模式一定很简单。它存在的目的很简单:定义一个用于创建对象的接口。

在简单工厂模式中,一个工厂类处于对产品类实例化调用的中心位置上,它决定那一个产品类应当被实例化, 如同一个交通警察站在来往的车辆流中,决定放行那一个方向的车辆向那一个方向流动一样。
先来看看它的组成:

     1) 工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑。在java中它往往由一个具体类实现。

     2) 抽象产品角色:它一般是具体产品继承的父类或者实现的接口。在java中由接口或者抽象类来实现。

     3) 具体产品角色:工厂类所创建的对象就是此角色的实例。在java中由一个具体类实现。

书中举的例子是用面向对象语言实现计算器控制台程序,输入数字与运算符。

错误的做法:将控值台的输入逻辑,与计算逻辑写到一个类里面,如果这时候有新需求,实现一个计算器,代码现在是不可复用的。正确的做法就是讲计算逻辑代码提取到一个新的类中(java三大特性:封装特性)

在这里插入图片描述

提取后
在这里插入图片描述

但是做到现在还不够,如果这时候,新加了一个平方根运算方法,我们就得重新修改,新增case判断条件,让之前的加减乘除都跟着参与变异,很可能会修改错误造成之前的代码也出现问题,所以我们应该讲case中的加减乘除也分离开来。

首先创建一个普通的java类。类中声明运算的两个数值,提供属性get set方法,与returnResult方法
在这里插入图片描述

紧接着加减乘除新类,继承上一步新建的java对象,并重写returnResult方法.(运用java继承跟重载)
在这里插入图片描述
按照以上方式改造完之后,修改任何一个算法,就不需要提供其他算法的代码,但是问题来了,如何让计算器知道我要用那一个算法?这就涉及到今天要说的 “工厂模式“,也就是说,到底是实例化哪个算法,将来会不会增加实例化的对象,比如增加开根运算,这是很容易变化的地方,应该考虑用一个单独的类来做这个创造实例的过程,这就是工厂

在这里插入图片描述

在这里插入图片描述

这样,只需要运算符号,工厂就会实例化出合适的对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值