C#中类和接口的设计思想(本人认为比较好的思想,欢迎大家讨论指点)
当我们设计一个类时,首先要规划这个类主要是干什么用的,并且对外要放出哪些接口。这时就要设计这个类的对外接口都有哪些了。在进行多层次开发的时候,由于下层对上层是透明的,上层无须知道下层的操作方式以及代码,因此我主张层与层之间的交互主要靠的是接口。尽量不要用类。下面的代码是设计的接口,类,以及其他的层的调用。
1
public interface IMaster
2
{
3
/// <summary>
4
/// 获得名称
5
/// </summary>
6
string GetName();
7
/// <summary>
8
/// 设置名称
9
/// </summary>
10
/// <param name="str">名称</param>
11
void SetName(string str);
12
}
13
public class Master:IMaster
14
{
15
/// <summary>
16
/// 底层
17
/// </summary>
18
private Master()
19
{
20
//
21
// TODO: 在此处添加构造函数逻辑
22
//
23
}
24
private static Master _instance = null;
25
/// <summary>
26
///
27
/// </summary>
28
/// <returns></returns>
29
public static Master Instance()
30
{
31
if(_instance == null)
32
{
33
_instance = new Master();
34
}
35
return _instance;
36
}
37
private string Name;
38![]()
39
IMaster接口
51
}
52![]()
53
/// <summary>
54
/// 上层
55
/// </summary>
56
public class User
57
{
58
IMaster MasterExample = null;
59
public User()
60
{
61
MasterExample = Master.Instance();
62
}
63
64
public string GetUseName()
65
{
66
return MasterExample.GetName();
67
}
68
public string SetUseName(string str)
69
{
70
MasterExample.SetName(str);
71
}
72
}
public interface IMaster2
{3
/// <summary>4
/// 获得名称5
/// </summary>6
string GetName();7
/// <summary>8
/// 设置名称9
/// </summary>10
/// <param name="str">名称</param>11
void SetName(string str);12
}13
public class Master:IMaster14
{15
/// <summary>16
/// 底层17
/// </summary>18
private Master()19
{20
//21
// TODO: 在此处添加构造函数逻辑22
//23
}24
private static Master _instance = null;25
/// <summary>26
/// 27
/// </summary>28
/// <returns></returns>29
public static Master Instance()30
{31
if(_instance == null)32
{33
_instance = new Master();34
}35
return _instance;36
}37
private string Name;38

39
IMaster接口51
}52

53
/// <summary>54
/// 上层55
/// </summary>56
public class User57
{58
IMaster MasterExample = null;59
public User()60
{61
MasterExample = Master.Instance();62
}63
64
public string GetUseName()65
{66
return MasterExample.GetName();67
}68
public string SetUseName(string str)69
{70
MasterExample.SetName(str);71
}72
}

浙公网安备 33010602011771号