设计模式第四次作业

抽象工厂模式
Provide an interface for creating families of related or dependent objects without specifying their concrete classes.为创建一组相关或相互依赖的对象提供一个接口,而且无需制定它们的具体类。
/*

  • 抽象产品A
    */
    public abstract class AbstractProductA{
    public abstract void method();
    }

/*

  • 抽象产品B
    */
    public abstract class AbstractProductB{
    public abstract void method();
    }

/*

  • 具体产品A1
    */
    public class ConcreteProductA1 extends AbstractProductA{

    @Override
    public void method() {
    System.out.println(getClass().getSimpleName()+".method");
    }
    }
    /*

  • 具体产品A2
    */
    public class ConcreteProductA2 extends AbstractProductA{

    @Override
    public void method() {
    System.out.println(getClass().getSimpleName()+".method");
    }
    }

/*

  • 具体产品B1
    */
    public class ConcreteProductB1 extends AbstractProductB{

    @Override
    public void method() {
    System.out.println(getClass().getSimpleName()+".method");
    }
    }
    /*

  • 具体产品B2
    */
    public class ConcreteProductB2 extends AbstractProductB{

    @Override
    public void method() {
    System.out.println(getClass().getSimpleName()+".method");
    }
    }

/*

  • 抽象工厂
    */
    public abstract class AbstractFactory{
    public abstract AbstractProductA createProductA();
    public abstract AbstractProductB createProductB();
    }

/*

  • 具体的工厂1
    */
    public class ConcreteFactory1 extends AbstractFactory{

    @Override
    public AbstractProductA createProductA() {
    return new ConcreteProductA1();
    }

    @Override
    public AbstractProductB createProductB() {
    return new ConcreteProductB1();
    }
    }

/*

  • 具体的工厂2
    */
    public class ConcreteFactory2 extends AbstractFactory{

    @Override
    public AbstractProductA createProductA() {
    return new ConcreteProductA2();
    }

    @Override
    public AbstractProductB createProductB() {
    return new ConcreteProductB2();
    }
    }

public static void main(String[] args){
AbstractFactory factory1 = new ConcreteFactory1();
factory1.createProductA().method();
factory1.createProductB().method();

AbstractFactory factory2 = new ConcreteFactory2();
factory2.createProductA().method();
factory2.createProductB().method();
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值