对工厂方法模式的理解

工厂方法模式,我想这里取名工厂方法模式,它的作用就是对这样一种抽象的架构进行一个基于场景的解释,所以我们在使用设计模式的时候,只要碰到了结构相似的情况,我们就可以套用这种设计模式,甚至是对这种设计模式进行改装,以达到我们的目的。设计模式本来就是变与不变的一种平衡。

我们有这样的一个场景:产品对象,工厂对象,工厂生产产品;

如果产品有多种,我们可以给产品抽象一个类,使得扩展的子类实现一种产品,这样增加一种产品对原来系统的影响不大,而且产品都使用了相同的接口,我们的工厂类也不需要变化,也就是说工厂和产品的接口是统一固定的一种契约,不在会改变,改变其中一个不会影响另一个,只要遵循契约。

如果工厂有多种,我们同样可以给工厂抽取一个抽象类,这个时候我们在工厂接口中提供统一的调用生成产品的方法,当我们需要一个新的以不同方式来生产组织产品的工厂的时候,我们可以编写一个继承自抽象工厂的类来实现就可以了,

但是这样写工厂的话会增加整个架构类的复杂性,如果我们的工厂类只是一个统一的访问入口,这个时候我们可以在工厂类中只使用一个static的方法来调用产品接口就可以了,这样系统也简单,但是这样的话,当我们工厂要变化的时候,这个时候比较麻烦,因为调用这个简单工厂方法的地方可能很多,修改了工厂原来的代码可能影响别的地方,所以使用简单工厂的话,工厂的变化收到约束。

这里我们在工厂与产品的类中尽量暴露少的方法给对方,尽量暴露公共接口中的方法。(迪米特法则)。

在工厂类中,我们可以对工厂的生产方式进行控制,比如:单例,多例,库存,延迟加载等。这个也符合单一职责原则吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值