工厂方法模式 factory

工厂方法模式:
定义了一个创建对象的接口,由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。

用 new 这个方法来创建对象,会造成耦合的问题,而这个问题可以通过工厂方法得以解决。

通常在设计一个类的过程中,在某个部分可能充斥的大量的实例化对象的地方,比如:
public class Store {
    public Product createProduct(ProductEnum e) {
        if(e == ProductEnum.a) { return new ProductA(); }
        if(e == ProductEnum.b) { return new ProductB(); }
        if(e == ProductEnum.c) { return new ProductC(); }
    }
}
这个地方就是需要变化的地方,一旦需要改变,就要改变Store这个类的代码,但是如果可以把这部分抽取出来,放到一个专门的类中,那就相当于对Store进行了解耦。

需要说明的一点是 简单工厂方法 是一种 “编程习惯”而不是一种 “设计模式”。

在使用工厂方法模式的时候,要注意两个概念:1.产品(包括:抽象的产品和具体实现的产品)。2.创建工厂(包括:抽象的工厂和具体实现的工厂)。

这两个概念应当是 “平行的类层级” 抽象的产品对应抽象的工厂,具体的产品对应具体的工厂。

设计原则:这个定义有一个名字叫“依赖倒置”
要依赖抽象,不要依赖具体类。
这个原则听起来很像是 “针对接口编程,不要针对实现编程” 但是在这个定义中,更加强调 抽象 的概念,这个定义说明:“不能让高层组件依赖于底层组件,而且,不管是高层组件还是底层组件,两者都应该依赖于抽象”。

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值