老大帮我看看这段代码,我这样写有问题吗?

jack15850798154 2010-05-24 10:24:26
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DuckDemo
{
public class Program
{
static void Main(string[] args)
{
GreenDuckname greenduckname = new GreenDuckname();
TangLaoYaDuckname tanglaoyaduckname = new TangLaoYaDuckname();
}

}
//y鸭子的说话,会飞的特性;
public abstract class Duck
{
private static string duckname;

public static string Duckname
{
get { return duckname; }
set { duckname = value; }
}
//抽象方法必须放在抽象类中;抽象类不能实例化;同时抽象方法没有实现(方法体),在子类中必须实现它;
//虚方法必须有实现(方法体)
public abstract void Fly(string duckname);
public abstract void Sound(string duckname);
}
/// <summary>
/// 绿头鸭继承了语言和会飞的类
/// </summary>
public class GreenDuckname:Duck
{

public GreenDuckname()
{
Duck.Duckname="绿头鸭";
Fly(Duck.Duckname);
Sound(Duck.Duckname);
}
public override void Fly(string duckname)
{
Console.WriteLine(duckname + "飞");
}
public override void Sound(string duckname)
{
Console.WriteLine(duckname + "呱呱叫");
}
}
/// <summary>
/// 唐老鸭继承了语言和会飞的类
/// </summary>
public class TangLaoYaDuckname : Duck
{

public TangLaoYaDuckname()
{
Duck.Duckname = "唐老鸭";
Fly(Duck.Duckname);
Sound(Duck.Duckname);
}
public override void Fly(string duckname)
{
Console.WriteLine(duckname + "飞");
}
public override void Sound(string duckname)
{
Console.WriteLine(duckname + "讲人话");
}
}
}

从设计模式的角度来说,我这段代码设计的有问题吗?如有问题还请指正。小弟在此谢过了。。
...全文
128 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
jack15850798154 2010-05-24
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 zlj002 的回复:]
你是java转过来的吧,呵呵
[/Quote]
不是的,我是在看一本叫做“深入浅出设计模式”当中的例子,我写的。怎么了啊。
lorinzhang 2010-05-24
  • 打赏
  • 举报
回复
你是java转过来的吧,呵呵
jack15850798154 2010-05-24
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 cuike519 的回复:]
这段代码似乎没有用到任何设计模式的内容,只是面向对象的概念而已。
唐老鸭能飞?唐老鸭的Fly实现应该是:throw new NotImplementedException();

GreenDuckname greenduckname = new GreenDuckname();
TangLaoYaDuckname tanglaoyaduckname = new TangLaoYa……
[/Quote]
好的,谢谢您了。
东莞寻香苑 2010-05-24
  • 打赏
  • 举报
回复
static void Main(string[] args)
{
Duck duck1;
duck1 = new GreenDuckname();//GreenDuck
duc1 = new TangLaoYaDuckname();// TangLaoYaDuck
}


这样就成工厂模式了
jack15850798154 2010-05-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 csui2008 的回复:]
你这样写,好像和设计模式没有什么关系
[/Quote]
你详细一点吗?
cuike519 2010-05-24
  • 打赏
  • 举报
回复
这段代码似乎没有用到任何设计模式的内容,只是面向对象的概念而已。
唐老鸭能飞?唐老鸭的Fly实现应该是:throw new NotImplementedException();

GreenDuckname greenduckname = new GreenDuckname();
TangLaoYaDuckname tanglaoyaduckname = new TangLaoYaDuckname();

根据设计上面两句话似乎应该写成:
Duck greenduckname = new GreenDuckname();
Duck tanglaoyaduckname = new TangLaoYaDuckname();

这样能变现虽然都是鸭子,但是他们飞和叫的特性是不同的。

greenduckname.Fly和tanglaoyaduckname.Fly调用的效果依赖于他们各自的实现,但是他们都是Duck(我一直认为唐老鸭应该属于人)。
子夜__ 2010-05-24
  • 打赏
  • 举报
回复
用父类去NEW子类。代码好像没问题吧。但是你想实现什么呢。?
wylp_19 2010-05-24
  • 打赏
  • 举报
回复
帮顶。。。接分。。。
东莞寻香苑 2010-05-24
  • 打赏
  • 举报
回复
你这样写,好像和设计模式没有什么关系
huangmin3956 2010-05-24
  • 打赏
  • 举报
回复
路过 打酱油
lzk1018834925 2010-05-24
  • 打赏
  • 举报
回复
俺也是只看到了OOP思想,别的吗?没有...
wiki14 2010-05-24
  • 打赏
  • 举报
回复
只看出了面向对象的特性。
yypf2540017 2010-05-24
  • 打赏
  • 举报
回复
路过,鸭子没味
jiongjiongtang 2010-05-24
  • 打赏
  • 举报
回复
路过。。。。。。。
shengyx 2010-05-24
  • 打赏
  • 举报
回复
噢也,来接分咯

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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