`
阿尔萨斯
  • 浏览: 4151568 次
社区版块
存档分类
最新评论

Java设计模式菜鸟系列(五)抽象工厂模式建模与实现

 
阅读更多

转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39784403


抽象工厂模式(Abstract Factory):抽象工厂--顾名思义,就是把工厂抽象出来,不同的工厂生产不同的产品。这样做有个好处:一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码。


一、uml建模图



二、代码实现

/**
 * 示例:抽象工厂--顾名思义,就是把工厂抽象出来,不同的工厂生产不同的产品
 * 
 * 优点:一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码
 */
interface Sender {
	public void send();
}

class EmailSender implements Sender {

	@Override
	public void send() {
		System.out.println("this is a email...");
	}
}

class SmsSender implements Sender {

	@Override
	public void send() {
		System.out.println("this is a sms...");
	}

}

/**
 * 角色:抽象工厂
 */
interface AbstractFactory {
	public Sender produce();
}

/**
 * 邮件工厂
 */
class EmailSendFactory implements AbstractFactory {

	@Override
	public Sender produce() {
		return new EmailSender();
	}
}

/**
 * 短信工厂
 */
class SmsSendFactory implements AbstractFactory {

	@Override
	public Sender produce() {
		return new SmsSender();
	}
}

/**
 * 客户端测试类
 * 
 * @author Leo
 */
public class Test {
	public static void main(String[] args) {
		/**
		 * 创建工厂
		 */
		AbstractFactory factory = new SmsSendFactory();
		/**
		 * 生产产品
		 */
		Sender sender = factory.produce();
		/**
		 * 执行业务逻辑
		 */
		sender.send();
	}

}

三、总结

如果你现在想增加一个功能:给特别关注的好友发信息,则只需做一个实现类,实现Sender接口,同时做一个工厂类,实现AbstractFactory接口,就可以了,无需修改现有代码。这样做拓展性较好!


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics