设计模式之抽象工厂模式

参考资料:http://blog.csdn.net/zhangerqing/article/details/8194653

工厂模式的缺点就是类的创建很依赖工厂类,如果想对程序进行扩展,这需要对工厂类进行修改,这违反了开闭原则。所以可是使用抽象工厂。具体例子如下:

首先先定义一个方法接口,代码如下:

1 package com.Yang.Factory;
2 
3 public interface Sender {
4     public void send();
5 }

两个实现了这个接口的类:

1 package com.Yang.Factory;
2 
3 public class MailSender implements Sender {
4     @Override
5     public void send() {
6         System.out.println("这里是MailSender类的send方法!");
7     }
8 }
1 package com.Yang.Factory;
2 
3 public class SmsSender implements Sender {
4     @Override
5     public void send() {
6         System.out.println("这里是SmsSender类的send方法!");
7     }
8 }

然后再定义一个工厂类的接口,代码如下:

package com.Yang.Factory;

public interface Provider {
    public Sender Create();
}

然后是实现了该接口的工厂类,代码如下:

1 package com.Yang.Factory;
2 
3 public class SenderMailFactory implements Provider {
4     @Override
5     public Sender Create() {
6         return new MailSender();
7     }
8 }

测试代码:

1 package com.Yang.Factory;
2 
3 public class Test {
4     public static void main(String[] args) {
5         Provider provider = new SenderMailFactory();
6         Sender msMailSender =provider.Create();
7         msMailSender.send();
8     }
9 }

输出信息:这里是MailSender类的send方法! 这样就不必在扩展的时候去修改工厂类了,只需要添加实现了接口的类就好。符合模式设计原则。

 

你可能感兴趣的:(设计模式之抽象工厂模式)