从简单工厂到抽象工厂

最近在画机房收费系统的图,登陆部分实现了两次一次是三层,一次是加设计模式。

都知道访问数据库的连接用的是抽象工厂加放射,我先用这种方法实现后,又改为简单工厂啦,发现简单工厂实现比抽象工厂简单很多。决定采用简单的实现,继续机房收费系统,发现简单工厂其实不简单,之所以认为简单是自己用错了简单工厂。也通过这次错误,改正了对两个工厂的认识。

 

先说一下自己的错误:

得先从系统登陆说起,用简单工厂改完后,图是这样的(如图1)

图没有发现错吧? !它是没错的。

 

接着就是实现图添加用户,删除用户等的有关用户的功能也都得通过这个工厂返回IUser类型的接口。既然知道了是使用一个接口,又有现成的工厂,直接添加方法就行了呗,我是这样想的也是这样画的(如图2)

图2中有错,能看出来么?

 

到后来的有关卡的接口ICard,用卡工厂实现的时候还是这么个想法,类图错了,其他的时序图啦什么的啦不用看肯定错。图画的差不多啦,让师哥看了下,给了很多指导,其中就看出了我用错的简单工厂。

错的是多个方法实现一个接口,用一个方法就行拉,也就是图1。

 

设计模式学的第一个模式就是简单工厂,怎么会有错呢,万万没有想到的是真的用错啦,登陆时的简单工厂确实没有错,就是用CreateUser方法返回一个IUser类型的接口,去实现链接数据库并返回特定账号的User信息。添加用户的时候,不仅接口中添加了添加用户的相关方法,而且还在工厂中添加了对应方法。造成了重复方法主要是没用,重要的是还把工厂用错啦。当时是怎么想怎么对,现在知道错了是怎么想怎么不对。哈。

 

还没有完呢,说到现在就说完了一个IUser 接口,上面说过了还有ICard接口呢,怎么实现呢,再添加一个Card工厂,实现ICard接口,如图3所示:

有点不好,还能再抽象一下,两个工厂共同实现一个接口,如图4所示:

这样不就是抽象工厂了么。如果还想用简单工厂实现怎么办,如下图5所示:

 

如果还有什么接口的话,直接用添加一个实现接口的方法就是拉。图4图5都是可以实现。至于到底是用抽象工厂还是简单工厂,只要用对用好,无论哪个都行。

 

本来就是用的抽象工厂,为了自认为的简单,尝试了一次简单工厂,还用错了,改的改的,又转回到了抽象工厂。转了一大圈,用物理中的[功]来说,是白做功就是做功为0,但是是吗,我感觉不是。经历了,就收获了。

 

 

总结:

简单工厂是一个工厂,可以实现多个接口,只是一个方法只对应一个接口。

抽象工厂是一个抽象,多个具体,一个具体又想当于一个简单工厂。

 

 

 

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值