设计模式之抽象工厂模式(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
- 【设计模式】之 Abstract Factory 抽象工厂
- 设计模式之:抽象工厂(Abstract Factory)
- 设计模式之抽象工厂Abstract Factory
- 设计模式之抽象工厂Abstract Factory
- .Net设计模式之抽象工厂模式(Abstract Factory)
- 设计模式(二)之Abstract Factory - 抽象工厂模式
- Java设计模式之抽象工厂(Abstract Factory)模式
- JAVA设计模式之抽象工厂(Abstract Factory)模式
- .NET设计模式之抽象工厂模式(Abstract Factory)
- 代码设计模式之抽象工厂模式(Abstract Factory)
- 设计模式之二 抽象工厂模式(Abstract Factory)
- 设计模式之抽象工厂模式(Abstract Factory)
- C++设计模式之抽象工厂模式(Abstract Factory)
- 【java设计模式】之 抽象工厂(Abstract Factory)模式
- 设计模式之抽象工厂模式(Abstract Factory)
- 【java设计模式】之 抽象工厂(Abstract Factory)模式
- 设计模式之抽象工厂模式(Abstract Factory)
- 【java设计模式】之 抽象工厂(Abstract Factory)模式
- 冒泡排序法
- HDU——1397Goldbach's Conjecture(二分查找+素数打表)
- linux 常用命令
- 腾讯地图api调用示例-功能-画多边形画圆自动复制一个
- java读取properties文件
- 设计模式之抽象工厂模式(Abstract Factory)
- 扩展Ubuntu虚拟机的硬盘空间
- HDU——1009FatMouse's Trade(贪心+结构体+排序)
- 详解java定时任务
- tomcat内存设置及jvm参数调优
- servlet jsp 经典总结
- UMeng崩溃日志如何进行symbiolicate
- mysql数据库-MyISAM与InnoDB两个存储引擎的索引实现方式
- iOS百度地图的基本使用