互联网观察 网站建设 网站运营 网上创业 电子商务 建站软件 建站软件教程 网站开发 网页制作 收藏本站
建站常识 | 域名 | 主机 | 网上开店 | 搜索引擎优化 | 网站推广 | 网络赚钱 | 站长经验 | 个人建站 | 网站设计 | 网页特效 | wap网站

殊途同归 四个程序员的一天

  你,一个DotNet程序员,刚刚加入一个新项目组。除了你之外,其他的成员包括:Ceer,一直从事C项目的程序员,他刚刚转入C#不到一个月; Jally,整天抱着本Design Pattern(没错,就是GoF的那本)在啃的前Java程序员;以及Semon,你对他完全不了解,只是听PM介绍说他是搞Scheme的(传说中的第二古老的语言LISP的方言之一)。不过你也没在意,毕竟计算机这玩意,老东西是不吃香的。

  周一,刚打开电脑,老板就跑到你们组的办公座面前:“好吧,伙计们,现在有个function需要你们来搞定。具体是这样的:用户输入2个数,并输入一个操作符。你根据输入的情况来得出相应的运算结果。“

Example: Foo(+, 1, 2) = 3; Foo(*, 3, 6) = 18; Foo(/, 2, 4) = 0.5

  Ceer最先作出反应:简单嘛,判断一下输入的操作符就好了。说着,他很快在白板上写出如下代码:

public class CStyle_Calculator
{
 static public double Foo(char op, double x, double y)
 {
  switch(op)
   case ’+’: return x + y; break;
   case ’-’: return x - y; break;
   case ’*’: return x * y; break;
   case ’/’: return x / y; break;
   default: throw new Exception(”What the Hell you have input?");
 }
}

  Jally只看了一遍,就捂着鼻子连连摇头:好一股的代码臭味。还不如看我用OO的方法来解决:

public interface I操作符 //谁说代码不能写中文的?恩恩
{
 double 运算(double x, double y);
}

public class OO_Calculator
{
 private I操作符 m_op;
 public OO_Calculator(I操作符 op)
 {
  this.m_op = op; //依赖注入【注2】
 }

 public double Foo(double x, double y)
 {
  return this.m_op.运算(x, y);
 }
}

public class 加法:I操作符
{
 public double 运算(double x, double y)
 {
  return x + y;
 }
}

public class 减法:I操作符
{
 public double 运算(double x, double y)
 {
  return x - y;
 }
}

public class 乘法:I操作符
{
 public double 运算(double x, double y)
 {
  return x * y;
 }
}

public class 除法:I操作符
{
 public double 运算(double x, double y)
 {
  return x / y;
 }
}

public class TheMainClass
{
 static public void Main()
 {
  I操作符 我的加法 = new 加法();
  OO_Calculator 我的加法器 = new OO_Calculator(我的加法);
  double sum = 我的加法器.Foo(3, 4);
  System.Console.WriteLine(sum);
  //sum = 7

  //其他3个我就不废话了
 }
}





上一篇:IT人的酸甜苦辣 女测试工程师的成长
下一篇:程序员的十种级别
相关分类
互联网观察 (1459)
  行业新知 (58)
  人物访谈 (143)
  行业新闻 (689)
  分析评论 (454)
  行业生涯 (113)
 



版权所有 Copyright© 2006 黑马建站宝典 联系方式:heima123#gmail.com