设计模式 - 工厂模式

/**
 * 工厂模式 - 简单工厂
 */
public class Factory {

    public static Service getService(Integer type) {
        if (Objects.equals(1, type)) {
            return new ServiceImpl1();
        } else if (Objects.equals(2, type)) {
            return new ServiceImpl2();
        } else {
            return null;
        }
    }
}

interface Service {
    void print();
}

class ServiceImpl1 implements Service {

    public void print() {
        System.out.println(ServiceImpl1.class);
    }
}

class ServiceImpl2 implements Service {

    public void print() {
        System.out.println(ServiceImpl2.class);
    }
}
/**
 * 工厂模式 - 工厂方法
 */
public class Factory {

    public static final Map<Integer, AbstractFactory> FACTORY_MAP = new HashMap<>();

    static {
        FACTORY_MAP.put(1, new Factory1());
        FACTORY_MAP.put(2, new Factory2());
    }

    public static AbstractFactory getParserFactory(Integer type) {
        if (Objects.equals(1, type)) {
            return FACTORY_MAP.get(1);
        } else if (Objects.equals(2, type)) {
            return FACTORY_MAP.get(2);
        } else {
            return null;
        }
    }
}

interface AbstractFactory {
    Service getInstance();
}

class Factory1 implements AbstractFactory {

    @Override
    public Service getInstance() {
        return new ServiceImpl1();
    }
}

class Factory2 implements AbstractFactory {

    @Override
    public Service getInstance() {
        return new ServiceImpl2();
    }
}

interface Service {
    void print();
}

class ServiceImpl1 implements Service {

    public void print() {
        System.out.println(ServiceImpl1.class);
    }
}

class ServiceImpl2 implements Service {

    public void print() {
        System.out.println(ServiceImpl2.class);
    }
}
/**
 * 工厂模式 - 抽象工厂
 */
public class Factory {
    private Product1 product1;
    private Product2 product2;

    private Factory(AbstractFactory factory) {
        this.product1 = factory.createProduct1();
        this.product2 = factory.createProduct2();
    }

    public Product1 getProduct1() {
        return product1;
    }

    public Product2 getProduct2() {
        return product2;
    }

    @Override
    public String toString() {
        return "Factory{" +
                "product1=" + product1 +
                ", product2=" + product2 +
                '}';
    }
}

interface AbstractFactory {
    Product1 createProduct1();

    Product2 createProduct2();
}

interface Product1 {

}

interface Product2 {

}

class XFactory implements AbstractFactory {


    @Override
    public Product1 createProduct1() {
        return new XProduct1();
    }

    @Override
    public Product2 createProduct2() {
        return new XProduct2();
    }
}

class YFactory implements AbstractFactory {


    @Override
    public Product1 createProduct1() {
        return new YProduct1();
    }

    @Override
    public Product2 createProduct2() {
        return new YProduct2();
    }
}

class XProduct1 implements Product1 {

}

class XProduct2 implements Product2 {

}

class YProduct1 implements Product1 {

}

class YProduct2 implements Product2 {

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值