2011年7月21日 星期四 new

把new弄明白
    在代码中,关键字new大家是一见如故。
 
1、使用new的方式一
 
     我们在进行面向对象开发时,动不动就创建对象。类作为具体实例的抽象,我们当然无法去直接使用。
    作为设计师,我们需要做的就是不断的创建多个类,设计这个类的方法和属性。
    如今的软件行业更多的像是建筑业。建筑师设计好一幢建筑的模型,包括它的外观,结构,所用的素材。
    而我们的new,就是建筑领域里的工程队,为设计师设计出来的抽象创建一个个具体的,如房顶,窗户,厨房等等,最后组建成我们的系统。当然最后的建筑是否伟大,还得取决于架构师。但我们'new'朋友可以说是矜矜业业,你要创建对象,你就调用一下。在.net运行环境中,不用去担心最后对象的垃圾回收问题。
    在设计模式中,有一种很有意思的工厂模式,真如现实中工厂的原型相类似。当我们想生产饼干时,OK,你按动一下我们这个工厂中的生产饼干的开关,就可以创建了。
 
2、使用new的方式二
 
    我们知道有了new,可以为对象很方便地创建内存空间。关键字new还有另外一种作用。
看下面的类的关系图:
  
    学生类和教师类共同继承于Person类,但他们有共同的方法Say().
这个时候有人会想你把基类Person中的Say加上Virtual声明为虚方法,然后在Student类中用override 修饰Say,重写一下。
    但如果Person类Say方法并未被声明为Virsual方法,那又该怎么办呢?修改Person类违背了开放和封闭原则。设计Person类的A君,不希望自己写的类被别人修改。
    好吧,想继承Person类的B君也要发言Say()一下,没办法,让我们来使用new关键字,来重新设计一个同名的方法Say()吧。
    要注意的是,B君设计的Student类中Say()方法已经和A君设计的Person类Say()毫无关系了.
 
3、使用new的方式三
 
    new的使用还真是挺多的,别急,下面的一种用法可以说有不少初学者会忽略的。
    
    
 
 




posted @   .windy  阅读(127)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
点击右上角即可分享
微信分享提示