个人理解:实现多态,使BLL与DAL之间解耦,易扩展。
如果不对,请高手指点。
IProudct 接口、实现 逻辑层与数据层的分离。
例:比如你的系统有3个版本,分别是SQLserver版本,多数据库版本,Oracal版本。这时候抽象工厂的优势就出来了,在编写完成不同的数据库访问层后,更改工厂类中的反射路径就可以实现,不需要更改逻辑程。
我记得Petshop4.0用了抽象工厂模式,IProuduct是抽象出商品的数据库操作,你可以实现SQLserver版本、Oracle等等版本的数据访问层。
PetShop4使用了带有简单工厂特质的抽象工厂模式,IDAL里的接口都是针对不同数据库版本而构建的,即:不同的数据库都要实现里面的接口,这样暴露给业务逻辑层的就是一个统一的接口,业务逻辑层使用该接口完成数据库的操作,而具体操作数据库的代码都是在具体的数据库操作类(SQLServerDAL,OracleDAL)里面完成的.
这样就降低了具体数据库操作代码与业务逻辑层的耦合