抽象工厂模式
来源:互联网 发布:mac自动登入灰色 编辑:程序博客网 时间:2024/06/03 16:07
工厂方法模式有一个问题就是,类的创建依赖工厂类,也就是说,如果想要拓展程序,必须对工厂类进行修改,这违背了闭包原则,所以,从设计角度考虑,有一定的问题,如何解决?就用到抽象工厂模式,创建多个工厂类,这样一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码。
直接看代码:
定义接口:
public interface Sender {public void Send(); }
定义两个实现类:
public class MailSender implements Sender {@Overridepublic void Send() {System.out.println("这是mail!!!!"); }}
<pre name="code" class="javascript">public class SmsSender implements Sender {@Overridepublic void Send() { System.out.println("这是sms!!!!!"); }}
定义一个工厂类接口:
public interface Provider { public Sender produce(); }
定义两个实现工厂类:
public class SendMailFactory implements Provider {@Overridepublic Sender produce() {return new MailSender();}}
public class SendSmsFactory implements Provider {@Overridepublic Sender produce() {// TODO Auto-generated method stubreturn new SmsSender();}}
测试:
public class TestMoShi { public static void main(String[] args) {//抽象工厂模式 Provider pro=new SendMailFactory(); Sender s=pro.produce(); s.Send(); }}
之所以觉得抽象工厂模式好,是因为如果我想增加一个功能,只需要实现Sender接口就行了,同时做一个工厂类,实现Provider接口,拓展性比较好!
0 0
- 工厂模式 -- 抽象工厂
- 工厂模式-抽象工厂
- 工厂模式-抽象工厂
- 工厂模式/抽象工厂模式
- 工厂模式&&抽象工厂模式
- 工厂模式---抽象工厂模式
- 工厂模式&抽象工厂模式
- 工厂模式,抽象工厂模式
- 【模式】抽象工厂模式
- 简单工厂、工厂模式、抽象工厂模式
- 简单工厂、工厂模式、抽象工厂模式
- 简单工厂&工厂模式&抽象工厂模式
- 工厂方法,抽象工厂模式
- 2,工厂模式--抽象工厂
- C#工厂模式-抽象工厂
- 工厂模式与抽象工厂
- 抽象工厂设计模式
- 抽象工厂模式
- 剑指offer 57 - 删除链表中重复的节点
- Java设计模式
- 使用ztree插件实现前端树状结构
- Handler的学习(二)
- Android中的错误:Wrong orientation? No orientation specified, and the default is horizontal
- 抽象工厂模式
- 几种LANDSAT文件格式导入方式[未完]
- Windows环境下PHP环境搭建
- 直接利用Android手机破解微信加密数据库EnMicroMsg.db
- .....an attempt to load the C runtime library without using a manifest.....
- HTML table、form表单标签的介绍
- 查看APK的包名
- linux与文件(夹)有关指令
- Eclipse与Android源码中ProGuard工具的使用(代码混淆)