假设我们公司有两种程序员:VB程序员指的是用VB写程序的程序员,用VBpro这个类表示;C程序员指的是用C写程序的程序员,用Cpro这个类来表示。每个类都有一个WriteCode()方法。
现在公司来了一个项目,要求派某个程序员写一个程序。
*/
namespace ConsoleApplication2
{
//VB程序员
class VBpro
{
public void WriteCode()
{
Console.WriteLine("我用vb写代码");
}
}
//C程序员
class Cpro
{
public void WriteCode()
{
Console.WriteLine("我用c写代码");
}
}
//编写项目类
class Pro
{
public void WriteProgram(VBpro program)
{
program.WriteCode();
}
public void WriteProgram(Cpro program)
{
program.WriteCode();
}
}
//测试
class Program
{
static void Main(string[] args)
{
Pro p = new Pro();
VBpro p1 = new VBpro();
p.WriteProgram(p1);
Cpro p2 = new Cpro();
p.WriteProgram(p2);
Console.ReadKey();
}
}
}
/**
但是如果这时公司又来了一个C#程序员,我们怎么改这段程序,使它能够实现用C#写程序的功能呢?我们需要增加一个新类C#程序员类,同时在此项目类中要再次
重载WritePrograme(C#pro programer)方法。这下麻烦多了。如果还有C++程序员,JAVA程序员呢。但是如果改用接口,就完全不一样了
*/
namespace ConsoleApplication2
{
//申明一个程序员接口
public interface IProgramer
{
void WriteCode();
}
//vb程序员
class VBpro : IProgramer
{
public void WriteCode()
{
Console.WriteLine("我用vb写代码");
}
}
//c程序员
class Cpro : IProgramer
{
public void WriteCode()
{
Console.WriteLine("我用c写代码");
}
}
//编写项目类
class Pro
{
public void WriteProgram(IProgramer iprogramer)
{
iprogramer.WriteCode();
}
}
//测试
class Program
{
static void Main(string[] args)
{
Pro p = new Pro();
VBpro p1 = new VBpro();
p.WriteProgram(p1);
Cpro p2 = new Cpro();
p.WriteProgram(p2);
Console.ReadKey();
}
}
}
网友评论