Factory Method模式

6Factory Method模式

真相:Factory Method模式实际上是延缓对象的创建,而把创建延迟到工厂中,将模块与具体对象的依赖转换成抽象工厂和具体工厂的依赖。(即接口和抽象类的弱依赖关系)

 

.NET Framework  对此模式进行了改造。

 

例子:WebRequest对象的创建:子类:HttpWebRequest/FtpWebRequest

 

WebRequest webRequest =WebRequset.Create(“Http://www.baidu.com”);

 

对于上面的实现的情况,在增加子类是需要修改Create方法的代码。违背了对修改关闭、继承开启的原则。

 

运用工厂模式对每一个请求类型创建单独的工厂子类,转换为弱依赖关系。

 

彻底解耦的办法:

     创建请求类型与工厂子类的映射类WebRequsetPrefixElement

Internal class WebRequsetPrefixElement{

Public string Prefix;

Public IwebRequsetCreator Creator;

 

Public WebRequsetPrefixElement(String p, IwebRequsetCreatorc ){

This.Prefix=p;

Creator=c;

}

}

 

 

在初始化WebRequset对象时,加载(静态方法)此时已有的WebRequsetPrefixElement对象数组。

当增加子类时,调用子类注册方法Regist()将新的WebRequsetPrefixElement对象假如数组中。此时创建WebReqest对象时根据URL开头查找WebRequsetPrefixElement数组,得到相应的Creator并创建对应的工厂对象。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值