抽象类,委托,工厂方法.示例

黄瓜黄瓜 2012-03-30 06:09:37

/// <summary>
/// 打印机抽象类
/// </summary>
public abstract class PrintBasic
{
private string name;

public string Name
{
get { return name; }
set { name = value; }
}
/// <summary>
/// 打印方法
/// </summary>
public abstract void Print();


}

/// <summary>
/// A打印机
/// </summary>
public class PrintA : PrintBasic
{
public PrintA(string name)
{
this.Name = name;
}
public override void Print()
{
Console.WriteLine(String.Format("我是{0}打印机",this.Name));
}
}

/// <summary>
/// B打印机
/// </summary>
public class PrintB : PrintBasic
{
public PrintB(string name)
{
this.Name = name;
}
public override void Print()
{
Console.WriteLine(String.Format("我是{0}打印机", this.Name));
}
}

/// <summary>
/// C打印机
/// </summary>
public class PrintC : PrintBasic
{
public PrintC(string name)
{
this.Name = name;
}
public override void Print()
{
Console.WriteLine(String.Format("我是{0}打印机", this.Name));
}
}

public delegate void delePrint();
/// <summary>
/// 计算机
/// </summary>
public class Computer
{
public event delePrint Print;
public void CmdPrint()
{
Console.WriteLine("start print.....");
if (Print != null)
{
Print();
}
Console.WriteLine("end print.....");
}
}

/// <summary>
/// 打印机工厂类
/// </summary>
public class PrintFactory
{
public PrintBasic GetPrint(string name)
{
PrintBasic print;
switch (name)
{
case "A":
print = new PrintA(name);
break;
case "B":
print = new PrintB(name);
break;
case "C":
print = new PrintC(name);
break;
default:
print = new PrintA(name);
break;
}
return print;
}


}
class Program
{
static void Main(string[] args)
{

PrintBasic pb = new PrintFactory().GetPrint("A");
Computer cp = new Computer();
cp.Print += new delePrint(pb.Print);
cp.CmdPrint();
Console.Read();

}




}
...全文
169 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuzan0123 2012-03-31
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
上班没事干啊...
[/Quote]

飘过·················继续敲代码·················
orochiheart 2012-03-31
  • 打赏
  • 举报
回复
我只在多线程操作当前UI的时候用过委托
委托主要是用来干嘛的?高手解答下啊
黄瓜黄瓜 2012-03-31
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]

想看看有什么好东西
[/Quote]
看到了吧呢...
钟景华 2012-03-30
  • 打赏
  • 举报
回复
想看看有什么好东西
黄瓜黄瓜 2012-03-30
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

可以很明白地告诉你,接口、委托非常常用,只要你真正理解,并且天天使用,写一个用法合理的小例子一点困难也没有。
[/Quote]

大大你给我一个合适的例子,免得我走弯路了么....
threenewbee 2012-03-30
  • 打赏
  • 举报
回复
可以很明白地告诉你,接口、委托非常常用,只要你真正理解,并且天天使用,写一个用法合理的小例子一点困难也没有。
黄瓜黄瓜 2012-03-30
  • 打赏
  • 举报
回复

充分说明了一点 我还需要修炼...
黄瓜黄瓜 2012-03-30
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

在另外一个帖子里面有人说“委托、接口”这些都是“理论”,而且这些理论“跟你的编程水平没有直接的关系”。(http://topic.csdn.net/u/20120327/18/59200c5c-c620-4bfa-814e-0fea2c075c59.html)

我不想再评论他们的这个观点,因为如果我看到如此的“说明用法”,我得到的结论不会和他们有什么不同。
[/Quote]
好吧...
我伤心了...被你打击到了...
threenewbee 2012-03-30
  • 打赏
  • 举报
回复
在另外一个帖子里面有人说“委托、接口”这些都是“理论”,而且这些理论“跟你的编程水平没有直接的关系”。(http://topic.csdn.net/u/20120327/18/59200c5c-c620-4bfa-814e-0fea2c075c59.html)

我不想再评论他们的这个观点,因为如果我看到如此的“说明用法”,我得到的结论不会和他们有什么不同。
threenewbee 2012-03-30
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
引用 3 楼 的回复:

.NET有反射,根本不需要画蛇添足发明什么简单工厂。

再说委托,你不觉得你这样用委托是没事找事么?

大鸟,这只是说了 抽象类,工厂,委托的简单用法...并不代表这样设计合理..
[/Quote]

原来你知道这是不合理的。既然如此为什么还要用一个不合理的设计来“说明”呢。尤其是,故意制造不合理。唯一的解释就是你根本就没搞清楚你要说明的东西有什么用。
黄瓜黄瓜 2012-03-30
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

.NET有反射,根本不需要画蛇添足发明什么简单工厂。

再说委托,你不觉得你这样用委托是没事找事么?
[/Quote]
大鸟,这只是说了 抽象类,工厂,委托的简单用法...并不代表这样设计合理..
色拉油 2012-03-30
  • 打赏
  • 举报
回复
羡慕。。。[Quote=引用 2 楼 的回复:]
上班没事干啊...
[/Quote]
threenewbee 2012-03-30
  • 打赏
  • 举报
回复
.NET有反射,根本不需要画蛇添足发明什么简单工厂。

再说委托,你不觉得你这样用委托是没事找事么?
黄瓜黄瓜 2012-03-30
  • 打赏
  • 举报
回复

上班没事干啊...
黄瓜黄瓜 2012-03-30
  • 打赏
  • 举报
回复

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧