抽象工厂设计模式

抽象工厂设计模式

1.核心实现类

**抽象工厂类:**抽象工厂角色,声明一组创建爱你产品的方法,每一个方法对应生成一种产品;
**具体工厂角色:**实现抽象工厂中定义的创建产品的方法,生成一组具体的产品呢,这些产品构成一个产品品种,每一个产品都位于每个产品的等级结构中;
**抽象产品角色:**为没哟个产品声明接口,即该类产品必须所应有的属性或者方法;
**具体产品角色:**定义具体工厂生产的具体产品对象,实现抽象产品接口中声明的业务方法;

2.具体使用
1.抽象工厂角色

public abstract class AbstractFactory {
    public abstract AbastractProductA createProductA();
    public abstract AbastractProductB createProductB();

}

2,具体工厂角色A


public class RealFactory1 extends AbstractFactory {
    @Override
    public AbastractProductA createProductA() {
        return new RealProductA1();
    }

    @Override
    public AbastractProductB createProductB() {
        return new RealProductB1();
    }
}

3.具体工厂角色B

public class RealFactory2 extends AbstractFactory {
    @Override
    public AbastractProductA createProductA() {
        return new RealProductA1();
    }

    @Override
    public AbastractProductB createProductB() {
        return new RealProductB1();
    }
}

4.抽象产品

public interface AbastractProductA {
     void method();
}

5.具体产品

public class RealProductA1 implements AbastractProductA{
    @Override
    public void method() {
        System.out.println("我是A1产品");
    }
}

6.具体实现


public class Client {

    public static void main(String[] args){

        AbstractFactory factory=new RealFactory1();
        AbastractProductA productA = factory.createProductA();

        productA.method();

        AbastractProductB productB = factory.createProductB();
        productB.method();

        AbstractFactory factoryB=new RealFactory2();
        AbastractProductA productA1 = factoryB.createProductA();
        productA1.method();

        AbastractProductB productB1 = factoryB.createProductB();
        productB1.method();
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值