组合模式,先占位,由于文章太耗时,后面补上。
using System;
using System.Collections.Generic;
namespace SimpleFactory
{
class Program
{
static void Main(string[] args)
{
福建省 福建 = new 福建省();
城市 龙岩 = new 城市();
区县 连城县 = new 区县();
区县 上杭县 = new 区县();
村镇 四堡镇 = new 村镇();
村镇 北团镇 = new 村镇();
村镇 新泉镇 = new 村镇();
福建.添加行政区域(龙岩);
福建.添加行政区域(龙岩);
龙岩.添加行政区域(连城县);
龙岩.添加行政区域(上杭县);
连城县.添加行政区域(四堡镇);
连城县.添加行政区域(北团镇);
上杭县.添加行政区域(新泉镇);
Console.WriteLine($"福建省的人口统计:{福建.人口()}人");
Console.WriteLine($"龙岩市的人口统计:{龙岩.人口()}人");
}
}
public interface 行政区域
{
int 人口();
}
public class 福建省 : 行政区域
{
public List<行政区域> 城市列表 { get; } = new List<行政区域>();
public void 添加行政区域(行政区域 city)
{
this.城市列表.Add(city);
}
public int 人口()
{
int population = 0;
foreach (var city in this.城市列表)
{
population += city.人口();
}
return population;
}
}
public class 城市 : 行政区域
{
public List<行政区域> 区县列表 { get; } = new List<行政区域>();
public void 添加行政区域(行政区域 area)
{
this.区县列表.Add(area);
}
public int 人口()
{
int population = 0;
foreach (var area in this.区县列表)
{
population += area.人口();
}
return population;
}
}
public class 区县 : 行政区域
{
public List<行政区域> 村镇列表 { get; } = new List<行政区域>();
public void 添加行政区域(行政区域 village)
{
this.村镇列表.Add(village);
}
public int 人口()
{
int population = 0;
foreach (var city in this.村镇列表)
{
population += city.人口();
}
return population;
}
}
public class 村镇 : 行政区域
{
public int 人口()
{
return new Random().Next(1000, 5000);
}
}
}