您的位置:首页 > 其它

设计模式——抽象工厂模式

2017-03-26 10:36 155 查看

定义

Provide an interface for creating families of related or dependent objects without specifying their concrete classes.

使用场景

一个对象族(或一组无任何关系的对象),具有相同约束。

UML



示例

抽象产品类

public abstract class Product {
public void shareMethod(){}

public abstract void method();

public abstract void method2();
}


具体产品类 A

public abstract class ConcreteProductA extends Product{
@Override
public void method() {

}
}


具体产品类 A 1

public class ConcreteProductA1 extends ConcreteProductA {
@Override
public void method2() {

}
}


抽象工厂类

public abstract class Creator {
public abstract Product createProduct1();

public abstract Product createProduct2();
}


具体工厂类 A

public class ConcreteCreatorA extends Creator {
@Override
public ConcreteProductA1 createProduct1() {
return new ConcreteProductA1();
}

@Override
public ConcreteProductA2 createProduct2() {
return new ConcreteProductA2();
}
}


场景类

public class Client {
public static void main(String[] args){
ConcreteCreatorA concreteProductA = new ConcreteCreatorA();

ConcreteProductA concreteProductA1 = concreteProductA.createProduct1();
ConcreteProductA concreteProductA2 = concreteProductA.createProduct2();

concreteProductA1.method();
concreteProductA1.method2();

concreteProductA2.method();
concreteProductA2.method2();
}
}


优点

封装性。只需关心接口。

产品族的约束为非公开状态。

局限

产品族扩大困难。违反开闭原则。(如需增加 ProductX3 ,需要修改接口,且与接口有关的代码皆需修改。)

END ~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息