设计模式----抽象工厂模式UML和实现代码

一、什么是抽象工厂模式?

定义:抽象工厂模式(Abstract Factory),提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类

当每个抽象产品都有多于一个的具体子类的时候,工厂角色怎么知道实例化哪一个子类呢?比如每个抽象产品角色都有两个具体产品。抽象工厂模式提供两个具体工厂角色,分别对应于这两个具体产品角色,每一个具体工厂角色只负责某一个产品角色的实例化。每一个具体工厂类只负责创建抽象产品的某一个具体子类的实例。

每一个模式都是针对一定问题的解决方案,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式针对的是多个产品等级结构。

二、抽象工厂模式UML图

005429_UYrL_2003960.png

、抽象工厂模式JAVA版

AbstractFactory.java

package com.amosli.dp.build.abstractfactory;

public abstract class AbstractFactory {
	public abstract AbstractProductA createProductA();
	public abstract AbstractProductB createProductB();
}


AbstractProductA.java

package com.amosli.dp.build.abstractfactory;

public abstract class AbstractProductA {
	public abstract void show();
}


AbstractProductB.java

package com.amosli.dp.build.abstractfactory;

public abstract class AbstractProductB {
	public abstract void display();
}


Factory1.java

package com.amosli.dp.build.abstractfactory;

public class Factory1 extends AbstractFactory{

	@Override
	public AbstractProductA createProductA() {
		return new ProductA1();
	}

	@Override
	public AbstractProductB createProductB() {
		return new ProductB1();
	}

}


Factory2.java 与Factory1.java类似 这里就不再列出来了。

ProductA1.java

package com.amosli.dp.build.abstractfactory;

public class ProductA1 extends AbstractProductA{

	@Override
	public void show() {
		System.out.println("a1");
	}

}

ProductA2.java ProductB1.java ProductB2.java与ProductA1.java类似

本系列文章源码地址,https://github.com/amosli/dp  欢迎Fork  & Star !!




转载于:https://my.oschina.net/u/2003960/blog/532375

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值