设计模式--代理模式的简单实现(C#)+类关系图 发表于 2008-08-01 Disqus: 本文字数: 663 阅读时长 ≈ 1 分钟 12345678910111213141516171819202122232425262728293031323334353637383940414243444546using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication1{ class Class1 { public static void Main() { Proxy p = new Proxy(); p.DoYourStuff(); Console.Read(); } } abstract class ProxyBase { public abstract void DoYourStuff(); } class Subject : ProxyBase { public override void DoYourStuff() { Console.WriteLine("do my job"); } } class Proxy : ProxyBase { Subject s; public override void DoYourStuff() { if (s == null) { s = new Subject(); } s.DoYourStuff();//throw new NotImplementedException(); } }}
装饰模式的简单实现(C#)内有图一张,嘿嘿..... 发表于 2008-07-31 Disqus: 本文字数: 1.2k 阅读时长 ≈ 1 分钟 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication1{ class Class1 { public static void Main() { Person p = new Person("张三"); Ring r = new Ring(); EarRing er = new EarRing(); NeckLace nl = new NeckLace(); r.Decrate(p); er.Decrate(r); nl.Decrate(er); nl.Show(); Console.Read(); } } class Person { string name; public Person(string name) { this.name = name; } public Person() { } //重载一个没有参数的构造函数,给其他子类用 public virtual void Show() { Console.WriteLine("{0}拥有以上装饰物品", name); } } class Decrator : Person { Person p; public override void Show() { p.Show(); } public void Decrate(Person p) { this.p = p; } } class Ring : Decrator { public override void Show() { Console.WriteLine("戒指"); base.Show(); } } class EarRing : Decrator { public override void Show() { Console.WriteLine("耳环"); base.Show(); } } class NeckLace : Decrator { public override void Show() { Console.WriteLine("项链"); base.Show(); } }}
策略模式的简单应用(C#) 发表于 2008-07-30 Disqus: 本文字数: 868 阅读时长 ≈ 1 分钟 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication1{ abstract class OperSuper { public abstract double GetResult(double a, double b); } class Add : OperSuper { public override double GetResult(double a, double b) { return a + b; } } class Minus : OperSuper { public override double GetResult(double a, double b) { return a - b; } } class Context { OperSuper os = null; double A, B; public Context(OperSuper o, double a, double b) { os = o; A = a; B = b; } public double GetResult() { return os.GetResult(A, B); } } class client { public static void Main() { Context c = new Context(new Add(), 10, 20); Console.WriteLine(c.GetResult()); c = new Context(new Minus(), 20, 10); Console.WriteLine(c.GetResult()); } }}
简单工厂的最最简单应用(C#) 发表于 2008-07-29 Disqus: 本文字数: 1.2k 阅读时长 ≈ 1 分钟 简单工厂的最最简单应用 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication1{ class Program { static void Main(string[] args) { Calculate cal = factory.CreateOper("-"); cal.A = 10; cal.B = 20; Console.WriteLine(cal.GetResult()); cal = factory.CreateOper("+"); cal.A = 10; cal.B = 20; Console.WriteLine(cal.GetResult()); } } abstract class Calculate { double _NumA = 0; double _B = 0; public double A { get { return _NumA; } set { _NumA = value; } } public double B { get { return _B; } set { _B = value; } } public abstract double GetResult(); } class Add : Calculate { public override double GetResult() { return A + B; } } class Minus : Calculate { public override double GetResult() { return A - B; } } class factory { public static Calculate CreateOper(string oper) { Calculate op = null; switch (oper) { case "+": op = new Add(); break; case "-": op = new Minus(); break; } return op; } }}
《编程之美——微软技术面试心得》一摞烧饼的排序 (不会做,看不懂) 发表于 2008-07-03 Disqus: 本文字数: 36 阅读时长 ≈ 1 分钟 《编程之美——微软技术面试心得》一摞烧饼的排序 (不会做,看不懂) 留个位置
《编程之美——微软技术面试心得》“中国象棋的将帅问题”C#实现 发表于 2008-07-02 Disqus: 本文字数: 349 阅读时长 ≈ 1 分钟 《编程之美——微软技术面试心得》“中国象棋的将帅问题”C#实现 1234567891011121314151617class Class1 { static byte counter = 81; static void Main(string[] a) { while (counter-- != 0) { if (counter / 9 % 3 == counter % 9 % 3) continue; else { System.Console.WriteLine("a=" + (counter / 9 + 1).ToString() + "b=" + (counter % 9 + 1).ToString()); } } System.Console.Read(); } }
编程之美 C#实现 1 发表于 2008-07-02 Disqus: 本文字数: 256 阅读时长 ≈ 1 分钟 适用于1.8GHZ左右的CPU 50%占用率 1234567891011121314class ManageCpu { staticvoid Main(string[] a) { int st = 0; while (true) { st = System.Environment.TickCount; while (System.Environment.TickCount - st < 90) { } System.Threading.Thread.Sleep(90); } }}