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

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

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

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

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

二、抽象工厂模式UML图

设计模式----抽象工厂模式UML和实现代码_第1张图片

、抽象工厂模式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 !!




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