1 //定義一個用戶該有的操作
2 public interface IUser
3 {
4 bool Login(string userName, string psw);
5 bool Login();
6 bool Exsit();
7 }
1 //定義一個抽象類,讓它去實現IUser接口
2 //編寫每個要User類需要執行的操作,如登錄信息記錄到日志,修飾符定義為可重寫virtual
3 public abstract class User : IUser
4 {
5 public string UserName { get; set; }
6 public string Psw { get; set; }
7 public User()
8 { }
9 public User(string userName, string psw)
10 {
11 this.UserName = userName;
12 this.Psw = psw;
13 }
14 public virtual bool Login(string userName, string psw)
15 {
16 Console.WriteLine("操作Login,記錄日志");
17 return true;
18 }
19 public virtual bool Login()
20 {
21 Console.WriteLine("操作Login,記錄日志");
22 return true;
23 }
24 public virtual bool Exsit()
25 {
26 Console.WriteLine("操作Exsit,記錄日志");
27 return true;
28 }
29 }
1 //從User中繼承Admin類,Admin類型有自己特有的一些操作,重寫父類中的操作,統一先執行父類中的操作
2 public class Admin : User
3 {
4 public Admin()
5 : base()
6 {
7
8 }
9 public Admin(string userName, string psw)
10 : base(userName, psw)
11 {
12
13 }
14 public override bool Login()
15 {
16 if (base.Login())
17 {
18 Console.WriteLine("操作Admin.Login");
19 return true;
20 }
21 return false;
22 }
23 public override bool Login(string userName, string psw)
24 {
25 if (base.Login(userName, psw))
26 {
27 Console.WriteLine("操作Admin.Login");
28 return true;
29 }
30 return false;
31 }
32 public override bool Exsit()
33 {
34 if (base.Exsit())
35 {
36 Console.WriteLine("操作Admin.Exsit");
37 return true;
38 }
39 return false;
40 }
41 }
1 public class Visitor: User
2 {
3 //從User中繼承Visitor類,Visitor類型有自己特有的一些操作,重寫父類中的操作,統一先執行父類中的操作
4 public Visitor()
5 : base()
6 {
7
8 }
9 public Visitor(string userName, string psw)
10 : base(userName, psw)
11 {
12
13 }
14 public override bool Login()
15 {
16 if (base.Login())
17 {
18 Console.WriteLine("操作Visitor.Login");
19 return true;
20 }
21 return false;
22 }
23 public override bool Login(string userName, string psw)
24 {
25 if (base.Login(userName, psw))
26 {
27 Console.WriteLine("操作Visitor.Login");
28 return true;
29 }
30 return false;
31 }
32 public override bool Exsit()
33 {
34 if (base.Exsit())
35 {
36 Console.WriteLine("操作Visitor.Exsit");
37 return true;
38 }
39 return false;
40 }
41 }
1 //靜態的User自成類,根據輸入信息,生成相應的實例,每個實例都有User中定義的屬性和方法
2 public static class UserFactory
3 {
4 public enum UserType
5 {
6 Admin,
7 Visitor
8 }
9 public static User CreateUser(UserType ut)
10 {
11 User user = null;
12 switch (ut)
13 {
14 case UserType.Admin:
15 user = new Admin();
16 break;
17 case UserType.Visitor:
18 user = new Visitor();
19 break;
20 }
21 return user;
22 }
23 public static User CreateUser(UserType ut, string userName, string psw)
24 {
25 User user = null;
26 switch (ut)
27 {
28 case UserType.Admin:
29 user = new Admin(userName, psw);
30 break;
31 case UserType.Visitor:
32 user = new Visitor(userName, psw);
33 break;
34 }
35 return user;
36 }
37 }
在IUser接口中定義幾個用戶該有的方法,然後新建一個抽象類,去實現這個接口,將抽象類中的將實現的方法定義為可重載的,新建兩個類型去繼承User,則兩個新的類型要調用父類方法後編寫自己的方法。
使用實例化用戶的靜態類UserFactory時,傳入用戶的類型,返回合適的實例化對象。