IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> 简单工厂模式VS工厂方法模式的个人思考 -> 正文阅读

[游戏开发]简单工厂模式VS工厂方法模式的个人思考

目录

前言

正文

工厂模式(概念性知识)

作用

分类

个人思考之简单工厂模式

在看了三遍概念,结合书之后,我对简单工厂模式的作用有了一个初步理解。

个人思考之工厂方法模式

结言


前言

学习《大话设计模式》,想把自己的想法记在这里,如有错误(必有疏漏),还请路过的朋友们指教,感谢!

正文

工厂模式(概念性知识)

作用

实现了类创建者和调用者的分离。

分类


?? ?简单工厂模式
?? ??? ?用来生产同一等级结构中的任意产品(对于增加新的产品,需要扩展已有代码),一个工厂
?? ??? ?对比工厂方法
?? ??? ??? ?代码简单
?? ??? ??? ?编程简单
?? ??? ??? ?管理简单
?? ??? ??? ?结构简单
?? ??? ?根据实际业务,我们一般会选择简单工厂模式
?? ?工厂方法模式
?? ??? ?用来生产同一等级结构中的固定产品(支持增加任意产品),不过每一个类都有对应的工厂类,每加一个都要写个工厂类
?? ??? ?根据设计原则,我们会选择工厂方法模式。


个人思考之简单工厂模式

在看了三遍概念,结合书之后,我对简单工厂模式的作用有了一个初步理解。

以Car类为例。我先创建一个Car接口。

然后分别创建BenChi类和BaoMa类来实现这个接口。

?

?然后新建Factory类

最后在Tes类中测试

?代码能够正常运行,我认为上文中对简单工厂模式的介绍

(?用来生产同一等级结构中的任意产品(对于增加新的产品,需要扩展已有代码),一个工厂

这里面的任意产品的任意应该就是体现在我的getCar(String s) 里面的字符串

我输入宝马它就实例化宝马类的getCar()方法,奔驰就是奔驰的。当然我认为参数是可以很多类型的,就看工厂类中的判断逻辑了。 如果我要增加新的车的话,我需要再写Car接口的实现类,然后在工厂类的判断逻辑中加入它。看起来还好,挺好用的。


个人思考之工厂方法模式

给的定义是:用来生产同一等级结构中的固定产品(支持增加任意产品),不过每一个类都有对应的工厂类,每加一个都要写个工厂类。

还是以刚刚的Car为例,首先Car接口和它的两个实现类(BaoMa和BenChi)都要有的(同上),它不再是一个工厂类来执行逻辑操作,而是每一个实现类都有一个自己的工厂,这无疑是增加代码量的环节。不过那么多的工厂我觉得也可以来一个接口,先把我的每个新代码贴上来。

?

?

引用一下书中原话(下图)。客户端在这应该和我的Test一样。你想要加产品,就要加那个产品类和它的工厂类,然后在客户端中调用就好了,这和简单工厂模式的区别就是下图中从“也就是说”后面。

实际应用场景中一般使用的是简单工厂模式,因为没有大的代码量,不过它违背了开放-封闭原则(对扩展开放,对修改关闭),从这一点上来看工厂方法模式更好,另外工厂方法模式保留了封装创建对象的优点。

后面大鸟提到了可以用反射解决分支判断的问题,我似懂非懂,因为在JDBC连接池那里好像就用到了,要用到泛型和反射。


结言

真的是基础中的基础,后面投入到实践中肯定不会像我这么简单的,我还得好好练练。

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2021-09-29 10:39:01  更:2021-09-29 10:40:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/28 3:28:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码