码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式总结篇系列:抽象工厂模式(Abstract Factory)

时间:2014-05-26 13:49:47      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:style   c   class   blog   code   java   

在上一篇的工厂方法模式中,通过一个公用的类对其他具有相同特性(实现相同接口或继承同一父类)的类的对象进行创建。随之带来的问题在于:当新定义了一个具有相同特性的类时,需要修改工厂类。这与设计模式中的开闭原则有些违背。因此,通过抽象工厂模式:创建多个工厂类而不是一个工厂类,一旦需要创建新的类对象,只需增加新的工厂类就可以了,不需要修改之前的代码。如此可以较好解决工厂方法模式中的问题。

常见经典写法如下(以发送邮件和短信为例):

1. 定义邮件类和短信类具有的共同接口:

与工厂方法模式中定义相同。

2.定义邮件类和短信类:

与工厂方法模式中定义相同。

3.定义不同工厂类所具有的共同接口(既然在需要的时候可以直接创建新的工厂类,那么这些工厂类应该是具有相同的接口的):

1 interface Provider {
2 
3     public Sender produce();
4 }

4.定义创建发送邮件工厂类和发送短信工厂类:

bubuko.com,布布扣
1 class MailFactory implements Provider {
2 
3     @Override
4     public Sender produce() {
5         return new MailSender();
6     }
7 
8 }
bubuko.com,布布扣
bubuko.com,布布扣
1 class SmsFactory implements Provider {
2 
3     @Override
4     public Sender produce() {
5         return new SmsSender();
6     }
7 
8 }
bubuko.com,布布扣

5.测试:

bubuko.com,布布扣
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 }
bubuko.com,布布扣

 

设计模式总结篇系列:抽象工厂模式(Abstract Factory),布布扣,bubuko.com

设计模式总结篇系列:抽象工厂模式(Abstract Factory)

标签:style   c   class   blog   code   java   

原文地址:http://www.cnblogs.com/lwbqqyumidi/p/3746483.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!