抽象工厂模式

简介: 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010741376/article/details/45816231

工厂方法模式有一个问题就是,类的创建依赖工厂类,也就是说,如果想要拓展程序,必须对工厂类进行修改,这违背了闭包原则,所以,从设计角度考虑,有一定的问题,如何解决?就用到抽象工厂模式,创建多个工厂类,这样一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码。

  直接看代码:

   定义接口:

  

public interface Sender {
	public void Send();  
}

定义两个实现类:

 

public class MailSender implements Sender {

	@Override
	public void Send() {
		System.out.println("这是mail!!!!");  

	}

}
<pre name="code" class="javascript">public class SmsSender implements Sender {

	@Override
	public void Send() {
		 System.out.println("这是sms!!!!!");  

	}

}



 定义一个工厂类接口: 
 

public interface Provider {
	 public Sender produce();  
}

定义两个实现工厂类:

public class SendMailFactory implements Provider {

	@Override
	public Sender produce() {
		
		return new MailSender();
	}

}

public class SendSmsFactory implements Provider {

	@Override
	public Sender produce() {
		// TODO Auto-generated method stub
		return new SmsSender();
	}

}

测试:
public class TestMoShi {
          public static void main(String[] args) {
			//抽象工厂模式 
        	  Provider pro=new SendMailFactory();
        	  Sender s=pro.produce();
        	  s.Send();  
		}
}

之所以觉得抽象工厂模式好,是因为如果我想增加一个功能,只需要实现Sender接口就行了,同时做一个工厂类,实现Provider接口,拓展性比较好!

相关文章
|
消息中间件 监控 Java
RocketMQ 同步发送、异步发送和单向发送,如何选择?
本文详细分析了 RocketMQ 中同步发送、异步发送和单向发送三种消息发送方式的原理、优缺点及适用场景。同步发送可靠性高但延迟较大,适合订单系统等场景;异步发送非阻塞且延迟低,适用于实时数据处理等场景;单向发送高效但可靠性低,适用于日志收集等场景。文章还提供了示例代码和核心源码分析,帮助读者更好地理解每种发送方式的特点。
2070 4
|
存储 安全 IDE
电脑开机时报错No Bootable Device找不到索引的解决方法
【9月更文挑战第1天】当电脑开机时报错 “no bootable device”(找不到可引导设备),可能原因包括硬件连接问题、引导顺序设置错误、系统引导文件损坏及 BIOS 设置问题。解决方法有检查硬盘连接与状态、调整 BIOS 引导顺序、使用安装盘修复引导文件、检查硬盘模式设置及恢复 BIOS 默认设置等。若问题依旧,建议寻求专业维修帮助,并备份重要数据。
5522 9
|
数据采集 网络协议 物联网
C# | 上位机开发新手指南(一)概述
C#,是微软主推的编程语言。它在工业控制、自动化、物联网等领域应用非常广泛。由于国内在工业控制领域技术发展路径的原因,早期的自动化控制面板由Window环境提供,大量的MFC、VB6控制应用被部署在了工厂车间。在用户习惯和界面环境的双料加持下,给C#在工业领域的推广打下的坚实的基础。使用C#进行上位机开发已经是行业内的主流选择。 如果正在读文章的你准备或正在从事C#的上位机开发,本专栏将会是您在这条路线上的路标。欢迎一同打卡每一个节点。
2332 0
C# | 上位机开发新手指南(一)概述
|
缓存 网络协议
图解 ARP协议工作流程
图解 ARP协议工作流程
777 0
|
安全 Java C语言
手撕各种排序(上)
手撕各种排序
111 0
|
存储 关系型数据库 MySQL
你有遇到过因为MySQL对大小写敏感而被坑的体验吗?
你有遇到过因为MySQL对大小写敏感而被坑的体验吗?
733 0
你有遇到过因为MySQL对大小写敏感而被坑的体验吗?
|
机器学习/深度学习 人工智能 自然语言处理
机器学习入门:概念原理及常用算法
机器学习入门:概念原理及常用算法
297 0
机器学习入门:概念原理及常用算法
|
人工智能 供应链 大数据
工业和信息化部办公厅关于开展2020年中小企业公共服务体系助力复工复产重点服务活动的通知
4月9日,工业和信息化部办公厅联合发布关于开展2020年中小企业公共服务体系助力复工复产重点服务活动的通知。
|
芯片 云栖大会 人工智能
杭州云栖大会技术见闻
非常有幸参加今年在杭州云栖小镇举办的云栖大会。在为期三天的展会中,主要就感兴趣的平头哥和飞天智能两类产品,参观了相关的展台和聆听了相关的分论坛。 在平头哥的展台上,主要看了下今年推出的玄铁内核展示,下面是使用武功秘籍的形式,展示出音频,视频,电力和人工智能等10个领域使用玄铁内核开发出的芯片;还是感
1554 0
|
SQL PHP 数据库
复现HITB PHP lover代码审计
参考文献:https://www.anquanke.com/post/id/104952 一直想学代码审计来着,看到了一篇大佬的关于php代码审计的wp,决定自己试一下 源码下载地址:https://hitbxctf2018.
1330 0