一、简单工厂
使用工厂模式来写一个简单的计算机
抽取计算机的计算功能为一个抽象方法
![](https://i-blog.csdnimg.cn/blog_migrate/56f991d19fd2db5e34109b3153175b76.png)
实现这个计算的加减乘除的方法
![](https://i-blog.csdnimg.cn/blog_migrate/93f9f78a956131ba79ff9723362c2f78.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a3b2417eef5315f2422b59f51d240c45.png)
![](https://i-blog.csdnimg.cn/blog_migrate/2c4f39fef865c8a8a4e857d974aceb7e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/574c6102d3928961624992b6d3718455.png)
创建计算工厂,利用多态来实现解耦,如果以后需要修改算法,只需要修改对应的算法实现,如果增加算法只需要新增一个算法类,并且修改工厂类即可
![](https://i-blog.csdnimg.cn/blog_migrate/0066503ade06fd351ad855edd67eaef1.png)
计算结果正确,以及UML类图
![](https://i-blog.csdnimg.cn/blog_migrate/99ec43b4c42f8e23d8130656a1f696ff.png)
![](https://i-blog.csdnimg.cn/blog_migrate/87a1311c9ad35f7ce65edafa889d1991.png)
二、工厂模式
工厂模式事简单工厂的一种增强
如果算法一直增多,则工厂类会越来越来越臃肿,违反了开放封闭原则
所以这个时候就可以根据算法的归纳来创建两个不同的算法工厂类
首先抽取工厂的功能,就是创建对应的计算实例
![](https://i-blog.csdnimg.cn/blog_migrate/0451aaf7ae46df5fe1d485c32806e9b4.png)
这是基础算法工厂
![](https://i-blog.csdnimg.cn/blog_migrate/e83bdc4e51696443bd60e2a1fc7d276b.png)
这是高级运算工厂和他的算法实现
![](https://i-blog.csdnimg.cn/blog_migrate/a2015e9cb60cf0c0f6aac744956f4150.png)
![](https://i-blog.csdnimg.cn/blog_migrate/3c3fcd2eb4bbd446882e058f170ae4ce.png)
![](https://i-blog.csdnimg.cn/blog_migrate/6807b239506f1005bae2ad4599b58bd7.png)
修改原先的大工厂类
![](https://i-blog.csdnimg.cn/blog_migrate/efe5255618a526a61f56ee0ad459bf46.png)
这样基础算法和高级算法就解耦了
计算正确,和UML类图
![](https://i-blog.csdnimg.cn/blog_migrate/d0080be517944f596cf6c1383e3922c1.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c29b410d0751020034441a9f081d2d4a.png)