100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 设计由何而来

设计由何而来

时间:2019-02-21 14:51:32

相关推荐

设计由何而来

设计由何而来

设计,从何而来?是需求。是重构。

设计原则是系统设计的灵魂,而设计模式是系统开发的模板,灵活自如的应用才是设计以不变应万变的准则。例如,实现一个用户注册的方法,首先会想到:

//初次设计

publicvoidRegister(stringname,Int32 age)

{

}

在一定的需求条件下,这个方法已经能够经受系统的考验,安全而平稳地向数据库中不断插入新的用户信息。然而,当需求发生变化时,你可能不得不对此做出调整,而我们就将这种调整称为重构。但是重构远不是扩充,而是设计。例如,现在的注册项发生了变化,还需要同时注册性别、电话,没有设计的调整,就被实现为:

//需求变更

publicvoidRegister(stringname,Int32 age,boolisMale, Int32 phone)

{

}

通过重载方式,一定程度上解决了这一问题,然而这种不能称为重构的调整,至少存在以下的弊端:

· 有新增的注册信息时,还要通过不断地重载Register方法来实现更多信息的扩展。

· 方法Register的参数列表实在太长了,这不是优雅的代码实现。

· 需要修改系统中相关的方法调用来适应新的重载方法。

僵化的调整失去了设计的灵活性,没有思考的程序只能使程序的扩展和维护变得不可收拾,其实对于上述问题,只需要进行简单的重构,就可轻松避免上述3个弊端,实现更加柔性的系统。例如,简单重构如下:

publicclassUserInfo

{

publicstringName{get;set; }

publicInt32Age {get;set; }

publicboolGender{get;set; }

}

通过将用户信息封装为一个类,实现更加简单的参数列表,同时其带来的好处还远不止避免了上述3个缺陷,而且能带来对用户信息的封装,实现更可靠的信息隐藏和暴露:

· 可以通过字段和属性封装,实现对于成员的只读、可读可写权限的控制。.NET 3.0的自动属性为属性封装实现了更为优雅的语法游戏,这些特性让C#成为更具有吸引力的高级语言(详见13.2节“赏析C# 3.0”):

//定义可读可写属性

publicstringMobile{get;set; }

//定义只读属性

publicstringPassword{get;privateset; }

· 实现一定的逻辑封装,例如对于电子邮件,可以检查其合法性:

privatestringemail;

publicstringEmail

{

get{returnemail;}

set

{

stringstrReg=@"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$";

if(Regex.IsMatch(value,strReg))

{

email=value;

}

else

{

thrownewInvalidCastException("InvalidEmail Address.");

}

}

}

那么,设计是如何实现和建立的呢?答案就是面向对象。正如上述演化过程一样,其中应用了面向对象中的封装要素,完成了更加柔性的设计。在1.3节“封装的秘密”中,我们就对封装展开了详细的探讨,基于实例的应用和对.NET实现本质的分析,能够更加强化对于面向对象基本要素的理解。

这些面向对象的思想和应用,来自于实践,完善于重构。

本文节选自《你必须知道的.NET(第2版)》一书

图书详细信息:/broadview/article/details/6673353

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。