| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> 设计模式笔记2-简单工厂模式(带有自制UML类图) -> 正文阅读 |
|
[Java知识库]设计模式笔记2-简单工厂模式(带有自制UML类图) |
2.简单工厂模式
来看一个订购面包的实例,要求程序具有可扩展性 1)面包的种类很多,(ButterBread, Toast...) 2)制作过程,(prepare, bake, pack) 3)完成面包的订购功能 2.1? 传统的方法思路:????????需要用到的类,Bread抽象类,ButterBread,Toast具体的实现类,OrderBread面包的订购类?? ? ? ? ? 具体实现,在OrderBread中完成对不同种类面包的订购 UML类图?? ? ? ?? ? ??代码
?测试结果?
存在问题1.让我们看看如果增加一种面包(WholeWheatBread)会发生什么 可以看到图中两条红线的情况,主要的改动是添加了一个类,OrderBread中需要修改if分支的代码 2.上一种情况看似问题不是很大,指修改了两个部分,那么如果我们的店铺扩张,又要添加新的订购类呢?就会变成如下情况 而这时如果我们在添加一种面包,需要同时改动OrderBread1与OrderBread2,需要改动的地方直接翻倍。 可以看到,这种方式随着类的增多,是十分不利于扩展和维护的。类越多,增加扩展所需要的改动就越多,稍有不慎就有可能遗漏,发生错误。 2.2? 简单工厂模式思路:新增一个SimpleFactory类,将面包的订购过程转移到该类的内部,让其他的Order类依赖SimpleFactory类,使得各种Order类与面包之间不存在依赖关系。另各种Order类转而依赖SimpleFactory类。 UML类图?代码(只包括修改或者新增的类)
扩展需求当我们要尝试着添加一个新的Order与面包种类时,只需要在SimpleFactory中新增面包的种类,而不用将每个Order类全部修改。 2.3两种方法的对比?传统方法:简单易懂,但是不利于扩展与维护。 简单工厂模式:将创建类的过程交给工厂类来完成,便于扩展新功能。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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/23 18:59:58- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |