, SimpleCollagePatterns , ( ShapeBuilder), .
, .
:
public interface IBuilder {
void Build();
}
public interface IBuilder<T> : IBuilder {
T BuildParameter {get;}
}
. BuildParameter BuildCollagePattern
:
public class SpecificBuilder : IBuilder<Int32> {
public SpecificBuilder(int param) { BuildParameter = param; }
public void Build() {
System.Console.WriteLine("Building with Int32: " + BuildParameter);
}
public Int32 BuildParameter {get; private set;}
}
IBuilder<T> IBuilder
public class Program {
public static void Main() {
SpecificBuilder builder = new SpecificBuilder(42);
Build(builder);
}
public static void Build(IBuilder builder) {
builder.Build();
}
}
: , , IBuilder<T>, . .
But you can design many things this way and support extensibility. I use this template to implement image filters, and yours BuildCollagePatterncan be very realistic with this design pattern.
source
share