java设计模式之抽象工厂模式学习

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

1.工厂类接口

package com.qiao.abstractFactory;

public interface Sender {
    public void send();
}

 

 2.发短信

package com.qiao.abstractFactory;

public class SMSSender implements Sender{

    public void send() {
        System.out.println("sms sender ");
    }

}

 

3.发邮件

package com.qiao.abstractFactory;

public class MailSender implements Sender{

    public void send() {
        System.out.println("mail sender ");
    }

}

 

4.工厂类的提供者接口

package com.qiao.abstractFactory;

public interface Provider {
    public Sender produce();
}

 

5.短信类的生产工厂

package com.qiao.abstractFactory;

public class SMSProduceer implements Provider{

    public Sender produce() {
        return new SMSSender();
    }

}

 

6.邮件类的生产工厂

package com.qiao.abstractFactory;

public class MailProduceer implements Provider{

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

 

7.调用方法 -- 发短信

    @Test
    public void test1(){
        Sender send = new SMSProduceer().produce();
        send.send();
    }

 

输出 : sms sender 

 

总结:抽象工厂的好处在于,有新的功能添加时,不需要去改原来的方法,只需要增加两个类即可。这个也就造成了他的缺点,当子类过多时,类的个数也会成倍增加。

 

转载于:https://www.cnblogs.com/Iqiaoxun/p/5565224.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值