工厂模式
我们在学抽象工厂之前所见到的设计模式的第一个代码就是小菜所写的第一款计算器代码,他把所有的运算都写在了一个运算类里,然后通过客户端去引用那个运算类来实现计算器的运算,代码如下:
过高的耦合性使它的安全性极低,因此在大鸟的教导下,有了第二版的代码
它把加减乘除的运算封装到各个类里,但它困难在于不知道怎么让计算机知道"我"想用的是哪一款
因此学习到了
简单工厂模式
什么是简单工厂模式,代码如下:
通过简单工厂模式来判断想要的是什么,然后工厂来实例化出想要的对象进行运算
好处在于当修改功能的时候,只需要修改对应的类,添加功能的时候也不会对其他的功能造成影响
然后我们学到了工厂方法
工厂方法
工厂方法:定义一个用于创建对象的接口,让子类决定用于实例化哪个类,工厂方法使一个类的实例化延迟到其子类,类图如下:
工厂方法把简单工厂的内部逻辑判断搞到了客户端代码来运行牺牲了灵活性,符合了开闭原则,和单一职责
抽象工厂
提供一个创建一系列相关或相互依赖的对象的接口,而无需指定他们具体的类
好处是易于交换产品系列 让具体的创建实例的过程和客户端分离
这个模式有个缺点就是增加功能的话要增加三个类才能变化,灵活性低
我们选择用工厂方法来改造抽象工厂
就有了这个DataAccess类
代码如上所示
这个方法实现了解耦的目的
最后我们用反射和配置文件来完成去除switch或者if 的操作带来的耦合