大话设计模式杂谈(1)简单工厂模式

《大话设计模式》的一些笔记,以及自己一些理解,作为入门读物

先看一段“面向过程”的代码,这里为了节省时间先截图。

为了完成一个计算器程序,代码如下:

 如果是为了解题,代码没有问题。但是如果面向工程实际,这段代码不易维护,因为在需求不断更新的情况下,很可能需要加入新功能等内容,需要反复的修改代码。

因此需要面向“对象”编程。书中举了“活字印刷”这一例子,生动形象的阐述了面向对象的好处:通过封装、继承、多态把程序的耦合度降低,利用设计模式使得程序更加灵活,易于修改,易于复用

由此进一步修改代码:将加减乘除操作封装到Operation类:

 

客户端代码:

 

 修改之后,求解问题也没什么毛病。同时业务(Operation)和界面(客户端)也进行了分离,有进步。

但是如果要加入一个开根sqrt运算呢?

那就在switch里加一个sqrt呗,很简单。但这时就有一个问题,仅仅做一个开根运算,每次却都需要加减乘除参与编译,如果一不小心改错了代码(比如加法改成减法),那就出问题了。所以说不能修改其中一个而印象另外的几个功能。

继续修改,利用继承和多态:

 

 

 已经初具雏形,其思想是要实例化对象。那么到底要实例化谁,未来会不会增加实例化对象,这些容易变化的对象,应该考虑用一个单独的类来做这个创造实例的过程,这就是工厂。这里提出了简单工厂模式

 

 可以看到只需要输入运算符号,工厂就可以实例化合适的对象,通过多态,返回父类的方式实现计算器结果。

客户端:

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值