cctv5节目表大全
在日常的学习、工作、生活中,肯定对各类范文都很熟悉吧。那么我们该如何写一篇较为完美的范文呢?接下来小编就给大家介绍一下优秀的范文该怎么写,我们一起来看一看吧。
cctv5节目表篇一
利用设计模式可以使我们的代码更灵活,更容易扩展,更容易维护。各种面向对象的程序设计语言都提供了基本相同的机制:比如类、继承、派生、多态等等。但是又有各自的特色,c# 中的反射机制便是一个很重要的工具,好好地利用就可以在实际中发挥很大的作用。 下面就和小编一起看看c#抽象工厂模式的几种实现方法及比较吧。
我们来看一个例子:
我的程序中有需要一系列的对象,比如apple,orange…, 要想利用他们,我们就必须在程序中根据用户要求,然后一个个调用 new 操作符来生成他们,这样客户程序就要知道相应的类的信息,生成的代码显然不够灵活。我们可以在代码中不利用具体的类,而只是说明我们需要什么,然后就能够得到我们想要的对象吗?
哦,我们都看设计模式,听吧,很多人都在那里鼓吹他们是如何如何的棒,我们看看怎么样利用他们来解决问题。目标明确了,那我们看看哪个能够符合我们的要求。gof的《设计模式》都看过吧,似懂非懂的看了一些,那我们看看能够不能够“凑”上去呢?j 嗯,我们的程序考虑的是对象怎么创建的,创建型模式应该符合要求吧。然后我们浏览一下各模式的“意图”部分。呵呵,第一个好像就撞到彩了,抽象工厂,我们看看吧,“提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类”,至少“无需指定它们具体的类”符合我们的要求。来看看它的结构吧:
我们的问题好像用不到这么复杂吧,只有orange,apple等等(应该就是product了),他们显然是一类的,都是fruit,我们只要一个生产水果的工厂就可以,左边的继承层次不要,只有一个fruitfactroy看看行不,先别管它正统不正统,实用就行j
下面的一些东西显然是我们需要的.:
public interface ifruit < { < } < < public class orange:ifruit < { < public orange() < { < ine("an orange is got!"); < } < } < < public class apple:ifruit < { < public apple() < { < ine("an apple is got!"); < } < } |
我们的fruitfactory应该是怎么样呢?上面的结构图中它给的是createproducta,那好,我就makeorange,还有一个createproductb,俺makeorange还不行??
public class fruitfactory < { < public orange makeorange() < { < return new orange(); < } < public apple makeapple() < { < return new apple(); < } < } |
怎么使用这个工厂呢?我们来写下面的代码:
string fruitname = ne(); < ifruit myfruit = null; < fruitfactory myfruitfactory = new fruitfactory(); < < switch (fruitname) < { < case "orange": < myfruit = ange(); < break; < case "apple": < myfruit = ple(); < break; < default: < break; < } |
编译运行,然后在控制台输入想要的东西,呵呵,成功了。沉浸在幸福中的你得意忘形了吧。
不过等等,它好像还不完美,我如果想要pear,我既要在客户代码中的switch中加入判断,又要在工厂方法中加入makepear方法,好像不怎么优雅。更好一点,在工厂中只提供一个方法,makefruit,然后传递进一个参数name,代表我们想要的水果的名称,这样的话,似乎我们的客户代码中的那个switch就可以不要了,相反,在fruitfactory中好像需要一个,还等什么呢?实现吧。
fruitfactory: < public class fruitfactory < { < public ifruit makefruit(string name) < { < switch (name) < { < case "orange": < return new orange(); < case "apple": < return new apple(); < default: < return null; < } < } < } |
客户代码:
string fruitname = ne(); < ifruit myfruit; < fruitfactory myfruitfactory = new fruitfactory(); < myfruit = uit(fruitname); |
这样看起来好多了,至少我客户代码中不要再写那么一长串的判断代码了。
阿q精神又在起作用,我们又沉浸在成功的喜悦中了。 嗯,代码好像可以,应该没有什么改进了。但是好像又有另外一个声音在说:
“除了一点……”
“嗯? 等等,什么?”
“fruitfactory也有switch啊,看起来也ugly啊!”
“哼,肯定是看《重构》或者是《tdd》了,怎么要求那么苛刻!反正闲着也是闲着,看看可以改不?”
既然不要条件判断,传入的只有水果的名称,假如name = “apple”,要生成一个apple的对象,我需要new apple(),如果我能够这样多好: new makeittoclass(name),把字符串转换成一个类。c#中虽然没有上述语法,但是提供了相应的机制,那就是反射。类,它对于反射起着核心的作用。我们可以使用 type 对象的方法、字段、属性和嵌套类来查找有关该类型的所有信息。
tor,它包含特定的方法,用以在本地或从远程创建对象类型,或获取对现有远程对象的引用。
我们可以先利用type类获取name指定的类名的类的type信息,然后可以根据这个信息利用activator创建对象。还等什么呢?
public class fruitfactory < { < public ifruit makefruit(string name) < { < ifruit myfruit = null; < try < { < type type = e(name,true); < myfruit = (ifruit)instance(type); < } < catch (typeloadexception e) < ine("i dont know this kind of fruit,exception caught - {0}" ,e); < return myfruit; < } < } |
经过这样的处理以后,增加新的水果的时候,我们不需要修改客户代码了,同时工厂的代码也不需要修改了,怎么样,爽吧!
s("content_relate");【c#抽象工厂模式的几种实现方法及比较】相关文章:
1.kmp算法的c#实现方法2.快速排序算法及c#版的实现示例3.c#实现轮询算法实例代码4.java开发策略模式的简单应用实现方法5.java抽象类和接口的比较6.php中抽象类与抽象方法的用法7.c#实现协同过滤算法的实例代码8.c#trietree介绍及实现方法
- 唐诗三百首
- 古诗三百首
- 宋词精选
- 元曲精选
- 古诗十九首
- 小学古诗
- 小学生必背古诗80首
- 小学生必背古诗70首
- 写景的古诗
- 咏物诗
- 描写春天的古诗
- 描写夏天的古诗
- 描写秋天的古诗
- 描写冬天的古诗
- 描写雨的古诗
- 描写雪的古诗
- 描写风的古诗
- 描写花的古诗
- 描写梅花的古诗
- 描写荷花的古诗
- 描写柳树的古诗
- 描写月亮的古诗
- 描写山的古诗
- 描写水的古诗
- 描写长江的古诗
- 描写黄河的古诗
- 描写儿童的古诗
- 山水诗
- 田园诗
- 边塞诗
- 含有地名的古诗
- 节日古诗
- 春节古诗
- 元宵节古诗
- 清明节古诗
- 端午节古诗
- 七夕古诗
- 中秋节古诗
- 重阳节古诗
- 古代抒情诗
- 伤怀的古诗
- 咏史怀古诗
- 爱国古诗
- 送别诗
- 离别诗
- 思乡诗
- 思念的诗
- 爱情古诗
- 励志古诗
- 哲理诗
- 闺怨诗
- 赞美老师的古诗
- 赞美母亲的古诗
- 关于友情的古诗
- 关于战争的古诗
- 忧国忧民的古诗
- 婉约诗词
- 豪放诗词
- 人生必背古诗
- 论语
- 诗经
- 孙子兵法
- 三十六计
- 史记
- 周易
- 山海经
- 资治通鉴
- 黄帝内经
- 了凡四训
- 梦溪笔谈
- 千字文
- 世说新语
- 左传
- 大学
- 中庸
- 尚书
- 礼记
- 周礼
- 仪礼
- 庄子
- 鬼谷子
- 老子
- 孟子
- 墨子
- 荀子
- 韩非子
- 列子
- 淮南子
- 管子
- 尉缭子
- 吴子
- 伤寒论
- 天工开物
- 素书
- 汉书
- 文心雕龙
- 吕氏春秋
- 孝经
- 孔子家语
- 颜氏家训
- 孙膑兵法
- 搜神记
- 笑林广记
- 楚辞
- 乐府诗集
- 论衡
- 百战奇略
- 战国策
- 三国志注
- 将苑
- 六韬三略
- 反经
- 公孙龙子
- 司马法
- 逸周书
- 黄帝四经
- 清官贪官传
- 睡虎地秦墓竹简
- 贞观政要
- 金刚经
- 佛说四十二章经
- 水经注
- 农桑辑要
- 文昌孝经
- 六祖坛经
- 地藏经
- 徐霞客游记
- 弟子规
- 增广贤文
- 幼学琼林
- 冰鉴
- 容斋随笔
- 智囊
- 围炉夜话
- 商君书
- 魏书
- 周书
- 三字经
- 子夏易传
- 笠翁对韵
- 公羊传
- 尔雅
- 三国志
- 后汉书
- 明史
- 晋书
- 宋史
- 新唐书
- 旧唐书
- 隋书
- 元史
- 宋书
- 北齐书
- 新五代史
- 陈书
- 金史
- 南齐书
- 梁书
- 旧五代史
- 辽史
- 北史
- 南史
- 续资治通鉴
- 明季北略
- 浮生六记
- 高士传
- 大唐西域记
- 传习录
- 小窗幽记
- 国语
- 说苑
- 本草纲目
- 神农本草经
- 难经
- 千金方
- 奇经八脉考
- 濒湖脉学
- 棋经十三篇
- 古画品录
- 茶经
- 百家姓
- 智囊(选录)
- 罗织经
- 朱子家训
- 陶庵梦忆
- 红楼梦
- 三国演义
- 聊斋志异
- 西游记
- 水浒传
- 儒林外史
- 封神演义
- 太平广记
- 警世通言
- 镜花缘
- 醒世恒言
- 剪灯新话
- 隋唐演义
- 初刻拍案惊奇
- 老残游记
- 博物志
- 孽海花
- 三侠五义
- 穆天子传
- 二刻拍案惊奇
- 喻世明言
- 说唐全传
- 老残游记续集
- 三刻拍案惊奇
- 四十二章经
- 心经
- 法华经
- 华严经
- 楞伽经
- 无量寿经
- 圆觉经
- 易传
- 抱朴子
- 阴符经
- 黄庭经
- 文子
- 太玄经
- 悟真篇
- 声律启蒙
- 随园诗话