ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

.net学习1.4

2020-08-15 14:34:50  阅读:194  来源: 互联网

标签:1.4 文件 小王 实现 系统 多态 学习 面向对象 net


翻开大部头的韦氏大词典,关于多态的定义为;可以呈现不同形式的能力或状态,这一术语来源于生物系统,意指同族生物具有的相同特征。而在,net中多态指同一操作作用于不同的1实例,产生不同的运行结果的机制,继承,封装和多态构成面向对象的三要素,成就了面向对象编程模式的基础技术机制。在本节,我们以入情入理的小故事为线索,来展开一次关于多态的循序渐进之旅,在故事的情节中思考多态和面向对象的艺术品质。

既然是个独立的应用系统,小王就分析了万能加载器应有的几个功能点,小结如下;自动加载各种资料,一站式收缩系统常见资料

能够打开常见文档类资料,

 

 小王按照构思的系统框架,首先构思了可能打开的最常用的文件,并将其设计为一个枚举,这样就可以统一来管理文件的类型啦,实现如下

 

 

看着这个初步设想的文件类型枚举,小王暗暗觉得真不少,如果在增加一些常用的文件类型,这个枚举还真是气魄不小呀。

有了要支持的文件类型,小王首先想到的就是实现一个文件类,来代表不同的文件资料,具体如下

 

 接着小王按照既定思路构建了一个打开文件的管理类,为每种文件实现器具体的打开方式,列如

 

 

哎呀这个长长的单子还在继续往下写,openjpgFile,OpenGifFile,OpenMP3fILE,OPENaVIfILE---不知要到什么时候。

上一步着实让小王步履维艰,下一步的实现更让小王濒临奔溃了,在系统调用端,小王实现的文件加载器是被这样事实现的;

 

 

 

 完成了文件打开的调用端,一切都好像上了轨道,小王的万能文档器也有了基本的架子,剩下再根据实际需求做一些调整即可,小王新虫虫的见自己的作品那个爷爷看,却发现爷爷正在想打开一段rm格式的京剧听听,但是小王的系统还没有支持职业文件格式,没办法只好回球继续修改了。

需要深度调整客户端,为系统维护带来麻烦,况且我们因该尽量白保持客户端的相对稳定,

word,pdf,MP3等都是可以是想的独立对象,整个系统除了有文档管理了几乎没有面向对象的影子,群不都是面向结构和过程的开发方式

在实现打开文件陈程序时小王发现其实OpenDocFile有很多重复的方法

由于系统之间没有分割,没有规划,整个系统就像一堆乱码几乎不可能完成任何简单的扩展和维护

任何修改都会将整个系统犀利一次修改遍布全系统的整个代码,并且全部重新编译才行。

需求变更时结果后化设计的大敌,无法轻松完成起码的系统扩展和变更,列如再打开这一操作之外,如果实现删除,重命名等其他操作,对当前的系统来说将是致命的打击,在发生需求多变的惊天,必须实现能够灵活扩展和简单变更的设计构思,面向对象是灵活设计的有效手段之一

看着经不起考验的系统,经过了短期的郁闷和摸索,小王终于找到了阿里巴巴不倪安东芝麻开门的魔咒,多态

,欸错多态就是面向对象的这是小王痛定思痛后翻出的有种感慨,小王再接再厉颠覆了原来的构思,一个新的设计宽假氤氲而生如图1-12所示

结合新的框架,比较值钱的别叫设计小王提出了新系统的新气象主要包括以下几处修改

将word,pdf等业务实体抽象为对象,并在每个相应的对象内部来处理本对象类型的文件打开工作,这样各个类型之间的交互操作就被分离出来,这样很好的体现了职责单一的员的目标

 

 将各个对象的属性和行为相分离,将文件打开这一行为封装为接口,再由其他类来实现这一接口,有利于系统的扩展同时减少了类鱼类的依赖。

将相似的类抽象出共共的基类在积累中实现具有共性的特征,并由子类继承父类的特征,类如word,pdf,txt的基类可以抽象weiDocLoader 而而jpg和gif的基类可以抽象为imagelodaer,这种实现体现的是面向对象的开放封闭原则,对扩张开放,对修改关闭,如果有性的类型需要扩展,则只需继承合适的基类成员,实现型类型的特征代码i即可。

标签:1.4,文件,小王,实现,系统,多态,学习,面向对象,net
来源: https://www.cnblogs.com/555556J/p/13508634.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有