设计模式之抽象工厂模式(Abstract Factory)

来源:互联网 发布:朝鲜大饥荒知乎 编辑:程序博客网 时间:2024/05/18 08:28

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

定义接口:

package com.usst.chicago;public interface Sender {public void send();}
两个实现类:

package com.usst.chicago;public class MailSender implements Sender {@Overridepublic void send() {System.out.println("this is mail sender!");}}
package com.usst.chicago;public class SmsSender implements Sender {@Overridepublic void send() {System.out.println("this is sms sender!");}}
再一个接口:

package com.usst.chicago;public interface Provider {public Sender produce();}
两个工厂类:

package com.usst.chicago;public class SendMailFactory implements Provider {@Overridepublic Sender produce() {return new MailSender();}}
package com.usst.chicago;public class SendSmsFactory implements Provider {@Overridepublic Sender produce() {return new SmsSender();}}
测试类:

package com.usst.chicago;public class Test {public static void main(String[] args){Provider provider = new SendMailFactory();Sender sender = provider.produce();sender.send();}}

其实这个模式的好处就是,如果现在增加一个功能:发及时信息,则只需做一个实现类,实现Sender接口,同时做一个工厂类,实现Provider接口,而无需改动现有的代码。这样做,扩展性好!~

0 0
原创粉丝点击