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.

116 lines
2.5 KiB

1 year ago
namespace ConsoleApp1.Animals
{
1 year ago
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();
}
}
}
1 year ago
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");
}
}
}