各位,小弟刚接触设计模式,23种设计模式大概了解了下,可是具体如何应用,我还是不太明白,请高人指点一下。
比如,用户,角色。
用户表中我只存:id,username,password.
角色表中我只存:id,rolename.
两者之间是一对多的关系,就是一个用户只对应一种角色。我不在用户表中存其对应的role_id,是因为,如果将来我对用户添加了新的关系,比如积分,我总不可能去修改用户表的结构,所以我用了第三者表:user_role来保存用户与角色的关系。
现在,读取用户的时候,我希望同时读取到其所对应的角色,我应该用哪种模式来定义class user呢?
由于我刚接触模式,我觉得无论是用工厂模式,还是装饰模式,或者是中介者模式,都可以达到我的目的,毕竟代码是死的,人是活的。
不知道你们觉得我应该用哪种模式呢?我觉得最大的可能性是中介者模式,定义一个class user_role.
然后,我有一个请求登录的action,我首先new user,根据账号和密码获取user对象,然后再new user_role,将user传入,获取其的role对象?这是不是麻烦了点?
请高人指点一下,最好有一个简单的例子。
------解决思路----------------------
个人认为用户和角色之间存在多对多的关系,因此需要中间表,在操作时可以使用关联映射,写一条连接查询就能实现,并且不需要user_role 类了,
------解决思路----------------------
设计模式是为了解决问题产生的, 你的问题是什么决定你用什么设计模式, 你没有问题却偏要生搬硬套一个设计模式上去, 这就是没事找事
你的问题就像: 医生, 我身高170, 体重60kg, 请问这二十三种药该吃哪一种, 医生: 吃你妹, 吃脑残片去
------解决思路----------------------
创建型模式:生产类对象用的,类似于new 类名();
结构型模式: 粗浅的说是定义类和类关系用的,官方的说是从程序的结构上解决模块之间的耦合问题。
行为型模式 :设计到算法和对象间的职责分配
你要解决的问题是数据结构上的基本问题,是数据库层次上的问题,当然如果仔细想想确实和中介者模式相似,也可以映射到中介者模式的,其实从原理上讲中介者和数据库范式在这里有重合啊,总之技术的东西真是很奇妙啊,我很是怀疑到了高深处是不是殊途同归,万法归宗了。
------解决思路----------------------
在啰嗦一下啦,楼主善于思考啊,不过如果没有人指点的话容易陷入误区,毕竟为了用设计模式二用设计模式是不可取的,但是如果你冲数据库结构上设计,不考虑什么设计模式,等你做完了,在和中介者模式对不你会发现,他们真的很相似啊,但是却不是同一个东西,不过这种第三者思想确实一样一样滴,user 和role两者确实需要第三者user_role。楼主加油啊,这种思考是必须的,恭祝楼主功力大进啊