首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

大家一起来谈谈这两种设计方法的哪一种好?该怎么处理

2012-04-04 
大家一起来谈谈这两种设计方法的哪一种好?现在我要做一个日志插入模块的功能,那日志插入可以包括:用户注册

大家一起来谈谈这两种设计方法的哪一种好?
现在我要做一个日志插入模块的功能,那日志插入可以包括:  
用户注册,用户基本操作,用户登录,用户注销。系统每执行以上功能时,系统都要插入相应的日志,现在实现有两种方法:
1、写出四个不同的插入方法 ,在使用时,只需要调用不同的方法即可。如
UserRegister(){...};UserOperater(){...};UserLogin(){...};UserLogout(){...}.
2、第二种方法,只写一个方法,在调用时,传入不同的参数。如:
UserLogs(int UserID,string 操作内容,string 操作时间){...};
请问,以上两种哪种方法会比较好一点??

我觉得第一种,在调用的时候,非常方便,不需要再写任何东西,但在设计的时候,非常麻烦。
第二种方法,在设计的时候很方便,但在调用的时候,很麻烦。

[解决办法]
哈哈,工厂模式把第一种封装起来,通过注入动态的参数告诉工厂你想要什么!
[解决办法]
去看看博客园的设计模式 那里面有个人写的文章 感觉和你这个log有点像
[解决办法]
用第二种会好一些,作为log库的设计者,它应该不关心要记多少种log (login logout 。。。 等等),而应该提供一个统一的接口给调用者。
[解决办法]
第一种方法直观,是大众法,易于理解,可读性好。缺点是不易扩展,例如再加个功能,就要重新编译代码。
第2中方法跟第一种相反。不易理解,但易于扩展。UserLogs函数所在的类,加个成员变量map<string, Operator>,key是操作内容标志,Operator是具体操作的父类或者接口,下面派生下来几个类,各自负责用户注册,用户基本操作,用户登录,用户注销。这些类使用同一个接口。在这个类构造的时候,往map里加入不同的操作的实例。UserLogs函数里,根据操作内容标志,从map里取到Operator,调他的函数,就可以了。

热点排行