抽象工厂模式记录

所有设计模式记录都来自于:http://www.cnblogs.com/lwbqqyumidi/p/3750128.html

工厂模式的问题在于:当新定义了一个具有相同特性的类时,需要修改工厂类。这与设计模式中的开闭原则有些违背。因此,通过抽象工厂模式:创建多个工厂类而不是一个工厂类,一旦需要创建新的类对象,只需增加新的工厂类就可以了,不需要修改之前的代码。如此可以较好解决工厂方法模式中的问题。

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

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

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

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

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

 interface Provider {
 
     public Sender produce();
 }

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

 class MailFactory implements Provider {
 
     @Override
     public Sender produce() {
         return new MailSender();
     }
 
 }
 class SmsFactory implements Provider {

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

5.测试:

 public class Client {
 
     public static void main(String[] args) {
         Provider provider = new MailFactory();
         Sender sender = provider.produce();
         sender.send();
     }
 
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值