首页 > 代码库 > 设计模式总结篇系列:抽象工厂模式(Abstract Factory)
设计模式总结篇系列:抽象工厂模式(Abstract Factory)
在上一篇的工厂方法模式中,通过一个公用的类对其他具有相同特性(实现相同接口或继承同一父类)的类的对象进行创建。随之带来的问题在于:当新定义了一个具有相同特性的类时,需要修改工厂类。这与设计模式中的开闭原则有些违背。因此,通过抽象工厂模式:创建多个工厂类而不是一个工厂类,一旦需要创建新的类对象,只需增加新的工厂类就可以了,不需要修改之前的代码。如此可以较好解决工厂方法模式中的问题。
常见经典写法如下(以发送邮件和短信为例):
1. 定义邮件类和短信类具有的共同接口:
与工厂方法模式中定义相同。
2.定义邮件类和短信类:
与工厂方法模式中定义相同。
3.定义不同工厂类所具有的共同接口(既然在需要的时候可以直接创建新的工厂类,那么这些工厂类应该是具有相同的接口的):
1 interface Provider {
2
3 public Sender produce();
4 }
4.定义创建发送邮件工厂类和发送短信工厂类:
1 class MailFactory implements Provider {
2
3 @Override
4 public Sender produce() {
5 return new MailSender();
6 }
7
8 }
1 class SmsFactory implements Provider {
2
3 @Override
4 public Sender produce() {
5 return new SmsSender();
6 }
7
8 }
5.测试:
1 public class Client {
2
3 public static void main(String[] args) {
4 Provider provider = new MailFactory();
5 Sender sender = provider.produce();
6 sender.send();
7 }
8
9 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。