java设计模式之抽象工厂模式

抽象工厂模式:提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。

抽象工厂允许客户使用抽象的接口来创建一组相关的产品,而不需要知道实际产出的具体产品是什么。

烤鱼之抽象工厂模式类图:
烤鱼之抽象工厂模式类图
类A,B实现了接口TiaoLiao,分别是调料A,调料B。FactoryA,FactoryB是AbstractFactory的子类,通过create方法来实例化TiaoLiao。

TiaoLiao接口代码实现:

public interface TiaoLiao {

}

A类代码实现:

public class A implements TiaoLiao{

    public A(){
        System.out.println("调料A");
    }
}

B类代码实现:

public class B implements TiaoLiao{

    public B(){
        System.out.println("调料B");
    }
}

AbstractFactory类代码实现:

public abstract class AbstractFactory {

    public abstract TiaoLiao create();
}

FactoryA类代码实现:

public class FactoryA extends AbstractFactory{

    @Override
    public TiaoLiao create() {
        // TODO Auto-generated method stub
        return new A();
    }

}

FactoryB类代码实现:

public class FactoryB extends AbstractFactory{

    @Override
    public TiaoLiao create() {
        // TODO Auto-generated method stub
        return new B();
    }

}

KaoYu类代码实现:

public class KaoYu {

    AbstractFactory abstractFactory;

    public KaoYu(AbstractFactory abstractFactory){
        this.abstractFactory = abstractFactory;
    }

    public TiaoLiao orderFish(){
        return abstractFactory.create();
    }
}

测试类AbstractFactoryTest代码实现:

public class AbstractFactoryTest {

    public static void main(String[] args){

        AbstractFactory abstractFactory = new FactoryA();
        KaoYu kaoYu = new KaoYu(abstractFactory);
        kaoYu.orderFish();

        AbstractFactory abstractFactory2 = new FactoryB();
        KaoYu kaoYu2 = new KaoYu(abstractFactory2);
        kaoYu2.orderFish();
    }
}

运行结果:

调料A
调料B
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值