问题描述
菜鸟的朋友们都希望提供定制的网站,有的希望是新闻发布形式的、有的希望是博客形式的、有的希望是产品图片加说明形式的,但是都希望费用上能大大降低。如果每个网站都独立租用空间费用上基本不能减低,而且维护众多网站的代码需要投入很大的时间和精力。
代码实现
public class User
{
private string mName;
public User(string name)
{
mName = name;
}
public string Name { get { return mName; } }
}
public abstract class WebSite
{
public abstract void Use(User user);
}
public class ConcreteWebSite : WebSite
{
private string mName = "";
public ConcreteWebSite(string name)
{
mName = name;
}
public override void Use(User user)
{
Console.WriteLine($"网站分类:{mName} , 用户:{user.Name}");
}
}
class WebSiteFactory
{
private Dictionary<string,WebSite>WebSiteDict = new Dictionary<string, WebSite> ();
public WebSite GetWebSite(string name)
{
if(!WebSiteDict.ContainsKey (name))
WebSiteDict.Add (name, new ConcreteWebSite(name));
return WebSiteDict[name];
}
public int GetWebSiteCount()
{
return WebSiteDict.Count;
}
}
internal class Program
{
static void Main(string[] args)
{
WebSiteFactory webSiteFactory = new WebSiteFactory ();
WebSite fx = webSiteFactory.GetWebSite("产品展示");
fx.Use(new User("小菜"));
WebSite fy = webSiteFactory.GetWebSite("产品展示");
fy.Use(new User("大鸟"));
WebSite fb = webSiteFactory.GetWebSite("博客");
fb.Use(new User("老顽童"));
WebSite fc = webSiteFactory.GetWebSite("博客");
fc.Use(new User("桃谷六仙"));
Console.WriteLine($"网站分类总数为{webSiteFactory.GetWebSiteCount()}");
}
}