JavaScript
68
Вклад в тег
void DoSomething (ICreatable layer) {
layer.Create();
}
DoSomething(new PerlinNoiseLayer())
Для генерации каждого слоя нужен разный набор параметров и генерируются они, соответственно, по-разномуНу вот у вас есть разница - вот и отобразите её в своем коде.
Это слой? - Да. - Ок, тогда посмотрим его высоты.Если есть такая необходимость - почему бы не ввести отдельный интерфейс для высот?
void DoSomething (IHasHeights layer) {
layer.Heights; // <== тут есть высоты
}
public abstract class Layer: ICreatable
{
float[,] Heights { get; set; }
public abstract void Create();
}
public class PerlinNoiseLayer : Layer
{
private float[,] _heights;
readonly int _resolution ;
public PerlinNoiseLayer (int resolution) {
_resolution = resolution;
}
public override void Create()
{
// тут расширение уже есть
}
}