利用虚函数和继承之模板模式
来源:互联网 发布:谷歌读屏软件下载. 编辑:程序博客网 时间:2024/05/01 05:03
请看需求概要:两个学生A和B,对于一道题进行了解答,要打印出他们对这两道题的解答答案。
最菜鸟的代码应该是定义一个类,里面写两个方法,分别在各自方法中具体实现打印题目和答案,这个就不附上了,看看稍稍改进了点的代码:
using System;using System.Collections.Generic;using System.Text;namespace 模板方法模式一级{ class Program { static void Main(string[] args) { Console.WriteLine("学生甲抄的试卷:"); TestPaperA studentA = new TestPaperA(); studentA.TestQuestion(); Console.WriteLine("学生乙抄的试卷:"); TestPaperB studentB = new TestPaperB(); studentB.TestQuestion(); Console.Read(); } } //金庸小说考题试卷 class TestPaper { public void TestQuestion() { Console.WriteLine(" 杨过得到,后来给了郭靖,炼成倚天剑、屠龙刀的玄铁可能是[ ] a.球磨铸铁 b.马口铁 c.高速合金钢 d.碳素纤维 "); } } class TestPaperA : TestPaper { public new void TestQuestion() { base.TestQuestion1(); Console.WriteLine("答案:b"); } } class TestPaperB : TestPaper { public new void TestQuestion() { base.TestQuestion1(); Console.WriteLine("答案:a"); } }}
这里用到了继承,从工作量上,将打印题目的方法写在父类里,子类继承后直接一个base.TestQuestion()就可实现打印题目,少了重复的打题目的代码。
可是看看,是不是还有重复的地方。恩,“答案:"这个单词在代码中出现了两次并且只是跟在其后的有一点不同罢了。于是又产生了以下的代码:
using System;using System.Collections.Generic;using System.Text;namespace 模板方法模式二级{ class Program { static void Main(string[] args) { Console.WriteLine("学生甲抄的试卷:"); TestPaper studentA = new TestPaperA(); studentA.TestQuestion(); Console.WriteLine("学生乙抄的试卷:"); TestPaper studentB = new TestPaperB(); studentB.TestQuestion(); Console.Read(); } } class TestPaper { public void TestQuestion() { Console.WriteLine(" 杨过得到,后来给了郭靖,炼成倚天剑、屠龙刀的玄铁可能是[ ] a.球磨铸铁 b.马口铁 c.高速合金钢 d.碳素纤维 "); Console.WriteLine("答案:" + Answer1()); } protected virtual string Answer1() { return ""; } } //学生甲抄的试卷 class TestPaperA : TestPaper { protected override string Answer1() { return "b"; } } //学生乙抄的试卷 class TestPaperB : TestPaper { protected override string Answer1() { return "c"; } }}
看看是不是又减少了代码量,从而减少了工作量。而其中只是父类中使用了虚函数,在子类中再具体实现而已。
搞编程的孩子们都是朝着一个目的进行的:在代码安全没什么影响的情况下,向着最少量代码的方向前进。我们就不用敲嫩多代码,手疼~
- 利用虚函数和继承之模板模式
- Django 之 模板继承 及 函数应用
- 利用C++模板,代替虚函数实现类的静态多态性及动态继承
- 利用C++模板,代替虚函数实现类的静态多态性及动态继承
- 利用C++模板,代替虚函数实现类的静态多态性及动态继承
- C++之虚函数和多重继承
- C++之虚函数继承和虚继承
- Linux kernel 分析之十七:设计模式-用C来实现继承和模板
- 照猫画虎--模板模式(继承)
- 继承和虚函数
- 虚拟继承和模板继承
- C++学习之虚函数和虚继承详解
- Django之模板继承
- smarty之模板继承
- 类模板的特化和函数模板的重载与类模板的继承
- 虚函数继承和虚继承
- 虚继承和虚函数继承
- 虚继承和虚函数继承
- 关于android.app.ActivityManagerNative
- 在VS2008中查看内存泄漏
- hdoj2061
- web页面添加右键事件
- 使用Apache + mod_wsgi部署webpy应用
- 利用虚函数和继承之模板模式
- 在线互联网地图API资源
- Android应用的自动升级、更新模块的实现
- 比大小
- Flex中如何利用setStyle()函数,实现showEffect和hideEffect效果
- c# 中 Random 的使用。
- Request.ServerVariables详解
- 转载推荐:给年轻程序员的几句话
- js的导出Excel,Word,pdf的实现以及服务器端生成pdf的实现