设计模式一 工厂模式 (1)
来源:互联网 发布:淘宝集分宝在哪里查看 编辑:程序博客网 时间:2024/04/29 08:26
面试题目:请用任意一种语言以面向对象方式编写一个计算器代码
最初始代码
public void DoOperation()
{
//输入
Console.Write("请输入数字A");
string A = Console.ReadLine();
Console.Write("请选择计算符号+,-,* ,/");
string B = Console.ReadLine();
Console.Write("请输入数字C");
string C = Console.ReadLine();
string D = "";
//判断计算过程
if (B == "+")
{
D = Convert.ToString(Convert.ToInt32(A) + Convert.ToInt32(B));
}
if (B == "-")
{
D = Convert.ToString(Convert.ToInt32(A) - Convert.ToInt32(B));
}
if (B == "*")
{
D = Convert.ToString(Convert.ToInt32(A) * Convert.ToInt32(B));
}
if (B == "/")
{
D = Convert.ToString(Convert.ToInt32(A) / Convert.ToInt32(B));
}
//输出结果
Console.ReadLine("结果是:" + D);
}
上述代码存在初学者最基本的几个问题点
1:代码的规范性 A B C D
2:对于if 的判断分支对计算机而言每个分支都要去做判断,等于做了三次无效工.
3:除法分支没有做最基本的分母零校验
修改后代码如下:
/// <summary>
/// 计算加减乘除的计算器方法
/// </summary>
public static void DoOperation()
{
//输入
Console.Write("请输入数字A");
string strNumberA = Console.ReadLine();
Console.Write("请选择计算符号+,-,* ,/");
string strOperate = Console.ReadLine();
Console.Write("请输入数字C");
string strNumberB = Console.ReadLine();
string strResult= "";
//判断计算过程
switch(strOperate)
{
case "+":
strResult = Convert.ToString(Convert.ToInt32(strNumberA) + Convert.ToInt32(strNumberB));
break;
case "-":
strResult = Convert.ToString(Convert.ToInt32(strNumberA) + Convert.ToInt32(strNumberB));
break;
case "*":
strResult = Convert.ToString(Convert.ToInt32(strNumberA) + Convert.ToInt32(strNumberB));
break;
case "/":
if(strNumberB != "0")
{
strResult = Convert.ToString(Convert.ToInt32(strNumberA) + Convert.ToInt32(strNumberB));
}
else
{
strResult ="除数不能为0";
}
break;
}
//输出结果
Console.ReadLine("结果是:" + strResult);
}
但是就上面而言是否达到了面试官的要求了呢?面向对象 这里有对象这个概念吗?以上写法都是程序员根据自己的思维逻辑思路写下来的,虽然结果出来了但是不是面试官要的。
个人体会:目前的我也一直出现在这个层次,真的非常的可怕.一旦碰到问题就直觉的用计算机能够理解的逻辑来描述和表达待解决的问题及具体的求解过程,其实是用计算机的方式去思考,譬如上述程序,输入两个数字 输出一个结果,这本身没有错误,但是这样的思维却使得我们的程序只为满足实现当前的需求,程序不容易维护,不容易扩展,更不让容易复用,从而达不到高质量代码的要求.
下一节我们就针对上述问题引出面向对象方法
- 设计模式一 工厂模式 (1)
- 设计模式(一)--简单工厂模式(1)
- 设计模式一:工厂模式
- 设计模式(一)----工厂模式
- 工厂设计模式一 简单工厂模式
- 设计模式--工厂设计模式(一)
- 设计模式一 简单工厂设计模式
- 设计模式一 简单工厂
- 设计模式一:工厂方法
- 设计模式一:简单工厂
- Java设计模式:工厂模式(一)简单工厂模式
- JAVA--简单工厂模式,工厂方法模式--设计模式一
- 设计模式之工厂模式(一)之简单工厂模式
- 设计模式1(工厂模式)
- 设计模式1:工厂模式
- 设计模式(1): 工厂模式
- 设计模式--[1]工厂模式
- 设计模式1-工厂模式
- Windows 2008, iis7, phpMyAdmin允许远程访问
- Net-SNMP简介
- Ubuntu FF 的Windows Media Player插件
- jtable排序
- C++中extern “C”含义深层探索
- 设计模式一 工厂模式 (1)
- 一个聪明男人的娶人经验,很实在很有道理
- Android 文件系统移植到 2440 未完
- 实例闹钟程序------C++类的应用
- 编译期对可转换型和继承性的侦测
- ubuntu10.04安装中文输入法
- dbus-python tutorialdbus-python tutorial
- 什么叫天下没有免费的午餐
- 深入剖析Spring Web源码(十三) - 处理器映射,处理器适配器以及处理器的实现 - 处理器的实现架构 - 简单控制器