工厂和工厂方法模式

简单工厂

起因: 为了解决客户程序对具体类型(经常快速变化)的依赖,将延迟New()动作到子类,中间加入另外一个对象(抽象对象)做桥梁, 将依赖转向到它的上面. 这就是工厂模式--简单的工厂

 

 

简单工厂的缺点:如果抽象工厂使用的频率小,易造成资源浪费.

解决这个问题三个方法:

将工厂实例做参数,传入具体的方法中.

采用单体模式, 生成一个实例系统就不再生成第二个, 所有的客户端都共享这个实例.

使用静态类, 根据提供的目标类型选择需要实例化的类型.

 

 

上面简单的工厂局限:

客户端虽然没有跟具体类型和方法耦合,当它还是跟具体的工厂耦合.所以还需要将其与具体工厂解耦.

 

工厂方法

方法:抽象一系列具有统一通用工厂方法的实体工厂为抽象工厂

它解决无法预知生产环境中实际需要创建的具体类型

客户端如何跟工厂连接起来----通过装配或程序的配置文件(传递参数)

 

批量工厂

上面的方法都是单件生产模式,

要批量生产,

工厂首先应具有返回具体类型实例的聚合的能力(产品类型容器)

怎样生产,用哪个工厂生产则需要生产指导(Director)

生产什么,则需要生产指导制定的决策(Decision)

 

采用泛型的Generic Factory

采用泛型抽象工厂,抽象工厂的方法(也就是工厂生成的类型采用泛型),---- 保证工厂类型的加工过程的通用性(内层抽象算法描述).

 

委托工厂类型

对具体实行方法的抽象,也就是委托的参数和具体方法的参数相同时,他们之间建立委托关系,客户端执行方法和事件时就无法考虑具体方法,由委托去处理.

 

注释:来源于<设计模式--基于C#的工程化实现及扩展>,作者:王翔

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值