GOF之工厂模式

简介

角色分析

        抽象工厂(Abstract Factory)::提供了创建产品的接口,调用者通过它访问具体工厂的工厂方法 newProduct() 来创建产品。

        具体工厂(ConcreteFactory):实现抽象工厂中的抽象方法,完成具体产品的创建。

        抽象产品(Product):定义了产品的规范,描述了产品的主要特性和功能。

        具体产品(ConcreteProduct):实现了抽象产品角色所定义的接口,由具体工厂来创建,它同具体工厂之间一一对应。

实现代码

//抽象产品
public interface Product {
    public void way();
}
//实际产品A:实现抽象产品中的抽象方法
public class ProductA implements Product {
    public void way() {
        System.out.println("实际产品A");
    }
}

//实际产品B:实现抽象产品中的抽象方法
public class ProductB implements Product {
    public void way() {
        System.out.println("实际产品B");
    }
}

//实际产品C:实现抽象产品中的抽象方法
public class ProductC implements Product {
    public void way() {
        System.out.println("实际产品C");
    }
}
//抽象工厂:提供了厂品的生成方法
interface AbstractFactory {
    public Product getProduct();
}
//具体工厂A:实现了厂品的生成方法
public class FactoryA implements AbstractFactory {
    public Product getProduct() {
        System.out.println("具体工厂A生成-->具体产品A");
        return new Product1();
    }
}

//具体工厂B:实现了厂品的生成方法
public class FactoryB implements AbstractFactory {
    public Product getProduct() {
        System.out.println("具体工厂B生成-->具体产品B");
        return new ProductB();
    }
}

//具体工厂C:实现了厂品的生成方法
public class FactoryC implements AbstractFactory {
    public Product getProduct() {
        System.out.println("具体工厂C生成-->具体产品C");
        return new ProductC();
    }
}
//测试
public class App {
    public static void main(String[] args) {
        AbstractFactory factory = new FactoryA();
        factory.getProduct().way();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值