1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
using System.Configuration;

namespace ConsoleApplication1
{
internal interface SportMan
{
void Come();
}

class ChineseSportMan : SportMan
{
public void Come()
{
Console.WriteLine("中国运动员来了~~~");
}
}

class RussianSportMan : SportMan
{
public void Come()
{
Console.WriteLine("俄罗斯运动员来了~~~");
}
}

class TheController
{
public static SportMan CreateSportMan()
{
//string s = (string)ConfigurationSettings.AppSettings["Nation"];
return (SportMan) Assembly.Load("ConsoleApplication1")
.CreateInstance("ConsoleApplication1." + ConfigurationSettings.AppSettings["Nation"].ToString());
//ConfigurationSettings.AppSettings[];
//return new ChineseSportMan();
}
}

class Client
{
public static void Main()
{
TheController.CreateSportMan().Come();
//s.Come();
//SportMan  c=(SportMan)Assembly.Load("ConsoleApplication1").CreateInstance("ConsoleApplication1.ChineseSportMan");
//c.Come();
}
}
}

设计模式---抽象工厂模式+反射+配置文件

设计模式---观察者模式(恐怖袭击、地震的例子,有类关系图)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
internal interface Warning
{
String Situation { get; set; }
void Warn();
void Add(PeopleInSchool p);
void Sub(PeopleInSchool p);
}

class PoliceStation : Warning
{
private IList<PeopleInSchool> field = new List<PeopleInSchool>();
string situation;

public string Situation
{
get { return situation; }
set { situation = value; }
}

public void Warn()
{
foreach (PeopleInSchool p in field)
{
p.WarningReceived();
}
}

public void Add(PeopleInSchool p)
{
field.Add(p);
}

public void Sub(PeopleInSchool p)
{
field.Remove(p);
}
}

class EarthquakeDepartment : Warning
{
string situation;
private IList<PeopleInSchool> field = new List<PeopleInSchool>();

public string Situation
{
get { return situation; }
set { situation = value; }
}

public void Warn()
{
foreach (PeopleInSchool p in field)
{
p.WarningReceived();
}
}

public void Add(PeopleInSchool p)
{
field.Add(p);
}

public void Sub(PeopleInSchool p)
{
field.Remove(p);
}
}

abstract class PeopleInSchool
{
protected Warning field;

public PeopleInSchool(Warning w)
{
field = w;
}

public abstract void WarningReceived();
}

class Teacher : PeopleInSchool
{
public Teacher(Warning w)
: base(w)
{
}

public override void WarningReceived()
{
Console.WriteLine("我是老师" + field.Situation);
}
}

class Student : PeopleInSchool
{
public Student(Warning w)
: base(w)
{
}

public override void WarningReceived()
{
Console.WriteLine("我是学生" + field.Situation);
}
}

class Client
{
public static void Main()
{
PoliceStation p = new PoliceStation();
Teacher t = new Teacher(p);
Student s = new Student(p);
p.Add(t);
p.Add(s);
p.Situation = "有恐怖袭击!!!";
p.Warn();
p.Situation = "注意防火防盗!!!";
p.Warn();
EarthquakeDepartment e = new EarthquakeDepartment();
t = new Teacher(e);
s = new Student(e);
e.Add(t);
e.Add(s);
e.Situation = "要地震了!!!";
e.Warn();
Console.Read();
}
}
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
abstract class Builder
{
public abstract void SetPrice();
public abstract void SetName();
}

class TVBuilder : Builder
{
private RawMateria rm;

public TVBuilder()
{
rm = new RawMateria();
}

public override void SetPrice()
{
rm.Price = "1500";
}

public override void SetName()
{
rm.Name = "TV";
}

public RawMateria GetTV()
{
return rm;
}
}

class PCBuilder : Builder
{
private RawMateria rm;

public PCBuilder()
{
rm = new RawMateria();
}

public override void SetName()
{
rm.Name = "PC";
}

public override void SetPrice()
{
rm.Price = "2000";
}

public RawMateria GetPC()
{
return rm;
}
}

class RawMateria
{
String _name;
String _price;

public String Name
{
get { return _name; }
set { _name = value; }
}

public String Price
{
get { return _price; }
set { _price = value; }
}

public void Show()
{
Console.WriteLine(this.Name + "    " \ + this.Price );
}
}

class Director
{
private PCBuilder pcbuilder = new PCBuilder();
private TVBuilder tvbuilder = new TVBuilder();

public RawMateria GiveMeTV()
{
tvbuilder.SetName();
tvbuilder.SetPrice();
return tvbuilder.GetTV();
}

public RawMateria GiveMePC()
{
pcbuilder.SetName();
pcbuilder.SetPrice();
return pcbuilder.GetPC();
}
}

class Client
{
public static void Main()
{
Director d = new Director();
d.GiveMePC().Show();
d.GiveMeTV().Show();
Console.Read();
}
}
}

设计模式---建造者(Builder)模式,有关系图

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
class Facade
{
private Func1 field1;
private Func2 field2;

public Facade()
{
field1 = new Func1();
field2 = new Func2();
}

public void Method()
{
field1.Method();
field1.Method1();
field2.Method();
}

public void Method1()
{
field2.Method();
field2.Method1();
field1.Method();
}
}

class Func1
{
public void Method()
{
Console.WriteLine("功能类1的方法1");
}

public void Method1()
{
Console.WriteLine("功能类1的方法2");
}
}

internal class Func2
{
public void Method()
{
Console.WriteLine("功能类2的方法1");
}

public void Method1()
{
Console.WriteLine("功能类2的方法2");
}
}

class Client
{
public static void Main()
{
Facade f = new Facade();
f.Method();
f.Method1();
Console.Read();
}
}
}

设计模式--模板方法模式(照旧,有类关系图)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
public class TheFather
{
public void BaseMethod1()
{
Console.WriteLine("吃了吗?");
BaseMethod2();
}

public virtual void BaseMethod2()
{
}
}

public class Son1 : TheFather
{
public override void BaseMethod2()
{
Console.WriteLine("吃了");
}
}

public class Son2 : TheFather
{
public override void BaseMethod2()
{
Console.WriteLine("还没呢");
}
}

public class Client
{
public static void Main()
{
TheFather obj = new Son1();
obj.BaseMethod1();

obj = new Son2();
obj.BaseMethod1();

Console.Read();
}
}
}

原型模式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
public class Simple : ICloneable
{
private int field1;
private int field2;

public int Property1
{
get { return field1; }
set { field1 = value; }
}

public int Property2
{
get { return field2; }
set { field2 = value; }
}

public object Clone()
{
return this.MemberwiseClone();
}
}

public class Complecated : ICloneable
{
private Simple simple;

public Complecated()
{
simple = new Simple();
}

private Complecated(Simple s)
{
simple = (Simple) s.Clone();
}

public object Clone()
{
Complecated c = new Complecated(simple);
return c;
}

public void SetMe(int a, int b)
{
simple.Property1 = a;
simple.Property2 = b;
}

public void Show()
{
Console.WriteLine(simple.Property1);
Console.WriteLine(simple.Property2);
}
}

public class Client
{
public static void Main()
{
Complecated c = new Complecated();
c.SetMe(1, 2);
Complecated c2 = (Complecated) c.Clone();


c2.SetMe(3, 4);

c.Show();
c2.Show();

Console.Read();
}
}
}

工厂模式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
class Client
{
public static void Main()
{
IFactory i = new AddFactory();
Math oper = i.CreateOperation();
oper.A = 5;
oper.B = 10;
Console.WriteLine(oper.DoTheMath());

i = new SubFactory();
oper = i.CreateOperation();
oper.A = 10;
oper.B = 3;
Console.WriteLine(oper.DoTheMath());

Console.Read();
}
}

class Math
{
double _a;
double _b;

public double A
{
set { _a = value; }
get { return _a; }
}

public double B
{
set { _b = value; }
get { return _b; }
}

public virtual double DoTheMath()
{
return 0;
}
}

class Add : Math
{
public override double DoTheMath()
{
return A + B;
}
}

class Sub : Math
{
public override double DoTheMath()
{
return A - B;
}
}

interface IFactory
{
Math CreateOperation();
}

class AddFactory : IFactory
{
public Math CreateOperation()
{
return new Add();
}
}

class SubFactory : IFactory
{
public Math CreateOperation()
{
return new Sub();
}
}
}

关系图

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
using 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();
}
}
}

ok

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
using 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();
}
}
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
using 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());
}
}
}

简单工厂的最最简单应用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
using 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;
}
}
}

《编程之美——微软技术面试心得》“中国象棋的将帅问题”C#实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class 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();
}

}

适用于1.8GHZ左右的CPU 50%占用率

1
2
3
4
5
6
7
8
9
10
11
12
13
14

class 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);
}
}
}