You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
115 lines
2.5 KiB
115 lines
2.5 KiB
namespace ConsoleApp1.Animals
|
|
{
|
|
|
|
internal class MealReceiverAdapter : IMealReceiver
|
|
{
|
|
public IMealContainer MealContainer { get; }
|
|
|
|
public MealReceiverAdapter(IMealContainer mealContainer)
|
|
{
|
|
MealContainer = mealContainer;
|
|
}
|
|
|
|
|
|
public int PutAMeal(int iCount)
|
|
{
|
|
if (iCount == 0) return 0;
|
|
for(int i = 0; i < iCount; i++)
|
|
{
|
|
MealContainer.ReturnAMeal();
|
|
}
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
internal class MealContainer : IMealContainer
|
|
{
|
|
private int MealCount = 10;
|
|
public int GetAMeal()
|
|
{
|
|
if (MealCount == 0) return 0;
|
|
MealCount--;
|
|
return 1;
|
|
}
|
|
|
|
public void ReturnAMeal()
|
|
{
|
|
MealCount++;
|
|
}
|
|
}
|
|
|
|
internal class MealConsumer : IDisposable
|
|
{
|
|
public IMealContainer Container { get; }
|
|
public int MealCount { get; private set; } = 0;
|
|
|
|
public MealConsumer(IMealContainer container)
|
|
{
|
|
Container = container;
|
|
}
|
|
|
|
public void ThreeHoursLater()
|
|
{
|
|
MealCount += Container.GetAMeal();
|
|
}
|
|
|
|
|
|
public void Dispose()
|
|
{
|
|
for(int ii =0; ii < MealCount; ii++)
|
|
{
|
|
Container.ReturnAMeal();
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
internal class Animal
|
|
{
|
|
#region internal classes
|
|
internal class MilkConsumerAreaInfo
|
|
{
|
|
public int Volume { get; set; }
|
|
public DateTime MonitoringDate { get; set; }
|
|
}
|
|
|
|
private class MilkConsumer
|
|
{
|
|
public int MilkVolume { get; set; }
|
|
}
|
|
#endregion
|
|
|
|
|
|
private List<MilkConsumer> knownMilkConsumers = new List<MilkConsumer>();
|
|
private string _typeName;
|
|
|
|
public void MeetMilkConsumer(int Volume)
|
|
{
|
|
knownMilkConsumers.Add(new MilkConsumer() { MilkVolume = Volume });
|
|
}
|
|
public void MeetMilkProduce(int Volume)
|
|
{
|
|
knownMilkConsumers.Add(new MilkConsumer() { MilkVolume = -Volume });
|
|
}
|
|
|
|
internal MilkConsumerAreaInfo GetAreaInfo()
|
|
{
|
|
return new MilkConsumerAreaInfo();
|
|
}
|
|
|
|
protected void SetAnimalTypeName(string sTypeName)
|
|
{
|
|
_typeName = sTypeName;
|
|
}
|
|
}
|
|
|
|
internal class CatAnimal : Animal
|
|
{
|
|
public CatAnimal()
|
|
{
|
|
SetAnimalTypeName("cat");
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
|