第1章 代码无错就是优?——简单工厂模式
概念
单独的简单工厂类,通过一个接口不同的分支,创建不同的实现类。
例子
设计一个计算器,不能面向过程:
-
业务与逻辑的封装
将界面与算法分开(业务与逻辑),界面包含业务部分负责客户交互,逻辑是算法,实现不同的运算。
-
紧耦合与松耦合
通过为不同的运算符创建不同的类(这样实现了对算法中方法的封装,进一步隔离了业务和实现逻辑)。Opera做为抽象类,加法、减法、乘法、除法分别继承Opera,(这样利用了继承,进一步将实现细节封装)
-
简单工厂模式
OperaFactor做为工厂类,为OperaFactor提供一个运算符参数,创建出相应的Opera子类但返回的是Opera类型(采用多态,将子类的创建也封装了)
实现
简单工厂类实现:
- 运算抽象类(Operate): 所有运算对象的父类,提供子类要实现的抽象接口,添加新运算符只需要创建新类,以及修改后面的OperaFactor即可。
- 具体运算符类: 对具体运算进行实现,实现了对具体算法的封装。
- 简单工厂类(OperaFactor): 集中创建具体运算子对象,通过OperaFactor传递参数来指明创建何种运算,返回多态的 Operate 父类隔离了具体子类。
- 客户端: 创建简单工厂类,传入运算符参数,工厂类返回以抽象Operate多态的具体运算符类对象。
实现图如下:
使用图:
作用
简单工厂模式,实现了子类对象创建的封装。
其它
另外,讲解了UML类图:继承(实线三角箭头)、实现(虚线三角箭头)、组合(实体菱形箭尾)、聚合(空心菱形箭尾)、依赖(虚线)、关联(实线)
网友评论