设计模式

本文围绕简单工厂模式、工厂方法模式和抽象工厂模式展开。作者先对三种模式进行题目分析并给出思路,接着进行类图设计,然后完成程序实现、调试、测试并展示运行结果。最后归纳经验,介绍各模式优缺点,还提及掌握了配置文件应用及设计模式选择方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作者:无*
时间:2019.5.1

一.题目分析

掌握简单工厂模式、工厂方法模式、抽象工厂模式,并进行设计应用。
以下是对三个模式进行简单的介绍并写出了自己的大致思路。
1.简单工厂模式:
简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。使用简单工厂模式模拟女娲(Nvwa)造人(Person),如果传入参数M,则返回一个Man对象,如果传入参数W,则返回一个Woman对象,请实现该场景。现需要增加一个新的Robot类,如果传入参数R,则返回一个Robot对象。利用配置文件进行传参。建立抽象产品类People,工厂角色类peoplefactory,在分别写三个具体的角色类Man,Woman,Robot
equalsIgnoreCase()用来比较字符串是否相等
配置文件://创建文档对象 //获取包含名称的文本节点

<?xml version="1.0"?>
<config>
	<className>NameOfFactory</className>
</config> 

具体代码:

//创建DOM文档对象
	DocumentBuilderFactory dFactory = DocumentBuilderFactory.newInstance();
	DocumentBuilder builder = dFactory.newDocumentBuilder();
	Document doc;	
        doc = builder.parse(new File("config.xml")); 
		
	 //获取包含类名的文本节点
         NodeList nl = doc.getElementsByTagName("className");
         Node classNode=nl.item(0).getFirstChild();
         String cName=classNode.getNodeValue();
            
         //通过类名生成实例对象并将其返回
         Class c=Class.forName(cName);
	 Object obj=c.newInstance();
         return obj;

2.工厂方法模式:
在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,这样做的目的是将产品类的实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟应该实例化哪一个具体产品类。
海尔工厂(Haier)生产海尔空调(HaierAirCondition),美的工厂(Midea)生产美的空调(MideaAirCondition) 。
创建的类中,有抽象产品类,具体的产品类(Haier)(Midea);抽象工厂类,具体的工厂类(Haierfactory)(Mideafactory)
3.抽象工厂模式:
在抽象工厂模式中,产品族是指由同一个工厂生产的,位于不同产品等级结构中的一组产品,抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,属于对象创建型模式。
电脑配件生产工厂生产内存、CPU等硬件设备,这些内存、CPU的品牌、型号并不一定相同。
在这里插入图片描述
分别创建:抽象工厂类Factory;具体工厂类Macfactory和Pcfactory;
抽象产品和具体产品类:CPU,RAM

二.类图设计

以下为简单工厂,工厂方法,抽象工厂方法模式的设计类图
在这里插入图片描述

三.程序实现 四.调试,测试及运行结果

1.调试截图
(1)简单工厂模式
在这里插入图片描述
(2)工厂方法模式
在这里插入图片描述
(3)抽象方法模式
在这里插入图片描述
2.测试及其代码
(1)简单工厂模式
在这里插入图片描述
(2)工厂方法模式
在这里插入图片描述
(3)抽象工厂模式
在这里插入图片描述
3.运行结果
(1)简单工厂模式
在这里插入图片描述
在这里插入图片描述
(2)工厂方法模式
在这里插入图片描述
在这里插入图片描述
(3)抽象工厂模式
在这里插入图片描述
在这里插入图片描述

五.经验归纳

此次上机主要是让我们熟悉主要的设计模式,这次是通过具体的实例了解并掌握了简单工厂模式,工厂方法模式以及抽象工厂模式,并了解到了不同设计模式的优缺点。
简单工厂模式:
简单工厂模式包含如下角色:
Factory:工厂角色
Product:抽象产品角色
ConcreteProduct:具体产品角色
由于使用了静态工厂方法,造成工厂角色无法形成基于继承的等级结构,工厂类不能得到很好地扩展。
工厂方法模式:
工厂方法模式包含如下角色:
Product:抽象产品
ConcreteProduct:具体产品
Factory:抽象工厂
ConcreteFactory:具体工厂
工厂方法用来创建客户所需要的产品,同时还向客户隐藏了哪种具体产品类将被实例化这一细节。但系统中类的个数将成对增加,在一定程度上增加了系统的复杂度,会给系统带来一些额外的开销。
抽象工厂模式:
抽象工厂模式包含如下角色:
AbstractFactory:抽象工厂
ConcreteFactory:具体工厂
AbstractProduct:抽象产品
ConcreteProduct:具体产品
当一个产品族中的多个对象被设计成一起工作时,它能够保证客户端始终只使用同一个产品族中的对象。
不同的设计模式可运用到不同的实例中,通过此次编程,还掌握了配置文件的应用,学会如何分析一个实例,并判断一个实例在最优情况下使用哪种设计模式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值