两种public接口比较解决方法
发布时间: 2013-04-21 21:18:07 作者: rapoo
两种public接口比较
(1)
[解决办法]仅从代码lz的两段代码上是看不出哪个好哪个坏的。
只要记住设计的原则是,让接口更容易被正确地使用,而不容易被错误地使用。
那几个设置项之间是互相独立的还是多选一的?如果是前者,建议用1;后者,可以用2,但函数名称要起得好点,如,SendTextAndSwitch2TheState。
[解决办法]单一职责适用于接口、类,同时也适用于方法,什么意思呢?一个方法尽可能做一件事情,比如一个方法修改用户密码,不要把这个方法放到“修改用户信息”方法中,这个方法的颗粒度很粗.
个人倾向第一种
[解决办法](2)的做法当然比(1)好得多,但是,(2)还未足够好,以下做法比(2)更好:
class TF_BOLD_ITALICS;
class TF_BOLD;
class TF_ITALICS;
class TextHandler
{
public:
template< typename T >
void SendText( const std::string & msg );
};
template< >
inline void TextHandler::SendText< TF_BOLD_ITALICS >( const std::string& msg )
{
std::cout << "TF_BOLD_ITALICS " << msg << std::endl;
}
template< >
inline void TextHandler::SendText< TF_BOLD >( const std::string& msg )
{
std::cout << "TF_BOLD " << msg << std::endl;
}
template< >
inline void TextHandler::SendText< TF_ITALICS >( const std::string& msg )
{
std::cout << "TF_ITALICS " << msg << std::endl;
}
int main( void )
{
TextHandler A;
A.SendText< TF_BOLD_ITALICS >( "kkkkkk" );
A.SendText< TF_BOLD >( "yyyyyy" );
A.SendText< TF_ITALICS >( "zzzzzzzz" );
return 0;
}
楼主能看出好在什么地方么?
[解决办法] A.SendText< TF_BOLD_ITALICS >( "kkkkkk" );
A.SendText_TF_BOLD( "yyyyyy" );
A.SendText(TF_ITALICS, "zzzzzzzz" );
三种形式没有任何区别。
另外,dry根本不是来说怎么定义接口的。
[解决办法]楼上再好好想想吧
[解决办法]马克。、。。
[解决办法]