class User
{
private string name;
public User(string name)
{
this.Name = name;
}
public string Name { get => name; set => name = value; }
}
abstract class WebSite
{
public abstract void Use(User user);
}
class ConcreteWebSite : WebSite
{
private string name = "";
public ConcreteWebSite(string name)
{
this.name = name;
}
public override void Use(User user)
{
Console.WriteLine("網站分類:" + name + " 用戶:" + user.Name);
}
}
class WebSiteFactory
{
private Hashtable hashtable = new Hashtable();
public WebSite GetWebSite(string key)
{
if(hashtable.Contains(key)==false)
{
hashtable.Add(key, new ConcreteWebSite(key));
}
return (WebSite)hashtable[key];
}
public int GetWebSiteCount()
{
return hashtable.Count;
}
}
class Program
{
static void Main(string[] args)
{
WebSiteFactory webSiteFactory = new WebSiteFactory();
WebSite w1 = webSiteFactory.GetWebSite("博客");
w1.Use(new User("小明"));
WebSite w2 = webSiteFactory.GetWebSite("博客");
w1.Use(new User("小紅"));
WebSite w3 = webSiteFactory.GetWebSite("學習");
w3.Use(new User("小蘭"));
WebSite w4 = webSiteFactory.GetWebSite("學習");
w3.Use(new User("小芳"));
Console.WriteLine($"{webSiteFactory.GetWebSiteCount()}");
}
}