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()}");
}
}