美文网首页
还为那些设计模式烦恼吗-抽象工厂模式

还为那些设计模式烦恼吗-抽象工厂模式

作者: Jenchar | 来源:发表于2018-03-09 13:49 被阅读5次

定义

为创建一组相关或者相互依赖的对象提供一个接口,而不需要指定它们的具体类。

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

public class ConcreteProductA1 extends AbstractProductA {

    @Override
    public void method() {
        // TODO Auto-generated method stub

    }
}

public class ConcreteProductA2 extends AbstractProductA {

    @Override
    public void method() {
        // TODO Auto-generated method stub

    }

}

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

public class ConcreteProductB1 extends AbstractProductB {

    @Override
    public void method() {
        // TODO Auto-generated method stub

    }

}

public class ConcreteProductB2 extends AbstractProductB {

    @Override
    public void method() {
        // TODO Auto-generated method stub

    }

}

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

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

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

public class Client {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        AbstractFactory mAbstractFactory1 = new ConcreteFactory1();
        mAbstractFactory1.createProductA().method();
        mAbstractFactory1.createProductB().method();
        
        AbstractFactory mAbstractFactory2 = new ConcreteFactory2();
        mAbstractFactory2.createProductA().method();
        mAbstractFactory2.createProductB().method();
    }

}

结论

优点:分离接口与实现,客户端使用抽象工厂来创建需要的对象,而客户端根本就不知道具体的实现是谁,客户端只是面向产品的接口编程而已,使其从具体的产品实现中解耦,同时基于接口与实现的分离,使抽象该工厂方法模式在切换产品类时更加灵活,容易。
缺点:类文件的爆炸性增加;不太容易扩展新的产品类,因为每当我们增加一个产品类就需要修改抽象工厂,那么的具体工厂类均会被修改

相关文章

网友评论

      本文标题:还为那些设计模式烦恼吗-抽象工厂模式

      本文链接:https://www.haomeiwen.com/subject/aqjpfftx.html