- 用戶接口
1 //定義一個用戶該有的操作2 public interface IUser3 {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 }
- 具體用戶類Admin
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 }
- 具體用戶類Visitor
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 }
- 實例化用戶的靜態類UserFactory
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時,傳入用戶的類型,返回合適的實例化對象。