设计模式之JAVA----抽象工厂模式

Posted hongshu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式之JAVA----抽象工厂模式相关的知识,希望对你有一定的参考价值。

定义

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

工厂类接口

package com.hongshu.abstact.factory;

import com.hongshu.factory.ordinary.dao.Sender;

/**
 * Description:
 * @since
 * @author HongShu
 * @version 1.0.0
 * 2014年7月30日 下午2:10:08
 */
public interface Provider 
	public Sender produce(); 


工厂类实现

package com.hongshu.abstact.factory;

import com.hongshu.factory.ordinary.dao.MailSender;
import com.hongshu.factory.ordinary.dao.Sender;

/**
 * Description:抽象工厂模式
 * @since
 * @author HongShu
 * @version 1.0.0
 * 2014年7月30日 下午2:09:34
 */
public class SendMailFactory implements Provider 

	@Override
	public Sender produce() 
		// TODO Auto-generated method stub
		return new MailSender();
	


工厂类实现

package com.hongshu.abstact.factory;

import com.hongshu.factory.ordinary.dao.Sender;
import com.hongshu.factory.ordinary.dao.SmsSender;

/**
 * Description:
 * @since
 * @author HongShu
 * @version 1.0.0
 * 2014年7月30日 下午2:11:48
 */
public class SendSmsFactory implements Provider 

	@Override
	public Sender produce() 
		// TODO Auto-generated method stub
		return new SmsSender();
	


测试类

package com.hongshu.abstact.factory;

import com.hongshu.factory.ordinary.dao.Sender;

/**
 * Description:抽象工厂模式测试类
 * 工厂方法模式有一个问题就是,类的创建依赖工厂类,
 * 也就是说,如果想要拓展程序,必须对工厂类进行修改,
 * 这违背了闭包原则,所以,从设计角度考虑,有一定的问题,如何解决?
 * 就用到抽象工厂模式,创建多个工厂类,这样一旦需要增加新的功能,
 * 直接增加新的工厂类就可以了,不需要修改之前的代码
 * @since
 * @author HongShu
 * @version 1.0.0
 * 2014年7月30日 下午2:12:11
 */
public class Test 
	public static void main(String[] args) 
		Provider provider = new SendSmsFactory();
		Sender sender = provider.produce();
		sender.send();
	


说明:其中用到Sender, MailSender 、SmsSender请对照 设计模式之JAVA----工厂模式

以上是关于设计模式之JAVA----抽象工厂模式的主要内容,如果未能解决你的问题,请参考以下文章

Java设计模式之简单工厂工厂方法和抽象工厂

java 之 抽象工厂模式(大话设计模式)

JAVA设计模式之抽象工厂模式 (转)

JAVA设计模式之---工厂模式

设计模式之JAVA----抽象工厂模式

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