Шаг 95 - Паттерн строитель

Более подробно о нем можно прочитать "Шаг 3 - Паттерн Строитель. Builder". В общем виде идея такая, есть серия объектов одинаковых по функциональности, но разных по реализации. Нужно создать простой механизм, который будет всегда одинаково создавать их. То есть, чтобы для любого объекта этого типа можно было вызвать сразу определенную последовательность функций.

using System;

abstract class AbstractBuilder 
{
	abstract public void BuildRoot();
	abstract public void BuildWall();
	abstract public void BuilFoundation();
}

class MyBulderSuperHouse : AbstractBuilder
{
	override public void BuildRoot()
	{
		Console.WriteLine("      ---    ");
		Console.WriteLine("   --------  ");
		Console.WriteLine("-------------"); 
	}

	override public void BuildWall()
	{
		for (int x=1;x<5;x++)
			Console.WriteLine("|            |");
	}

	override public void BuilFoundation()
	{
		Console.WriteLine("-------------");
		Console.WriteLine("|-----------|");
		Console.WriteLine("-------------"); 
	}
}


class MyBulderSmalHouse : AbstractBuilder
{
	override public void BuildRoot()
	{
		Console.WriteLine("   --------  ");
		Console.WriteLine("-------------"); 
	}

	override public void BuildWall()
	{
		for (int x=1;x<3;x++)
			Console.WriteLine("|            |");

	}

	override public void BuilFoundation()
	{
		
	}
}

class Creator
{
	public void Create(AbstractBuilder ab)
	{
		ab.BuildRoot();
		ab.BuildWall();
		ab.BuilFoundation();
	}
}

class MainClass
{
	public static void Main(string[] args)
	{
		Creator cr = new Creator();
		cr.Create(new MyBulderSuperHouse());
		Console.WriteLine(); 
		cr.Create(new MyBulderSmalHouse());
	}
}

Есть некоторый абстрактный класс у нас он AbstractBuilder на основе него создаются классы, который используются в другом классе у нас он Creator который будет вызывать функции из классов. Данный паттерн можно применять во всех ситуация когда одну последовательность нужно применить к разным классам. Вот такая картинка.

gif/95_1.gif (1721 b)


Загрузить проект | Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем.