ПКРПСиБД LAB3 Бочаров И.А. (548640)
Текст из файла
Национальный исследовательский институт
Московский Энергетический Институт (Технический Университет)
Институт автоматики и вычислительной техники
Кафедра Прикладной математики
Лабораторная работа №3
по дисциплине:
Проектирование крупных распределенных программных систем и баз данных
тема: «Разработка одного из порождающих паттернов»
Выполнил:
Бочаров Иван Андреевич
Проверил:
к.т.н., доц. Куриленко Иван Евгеньевич
Москва
2012 г.
Шаблон проектирования «Строитель»
Категория шаблона
Шаблон проектирования «Строитель» относится к порождающим шаблонам проектирования.
Описание шаблона
Данный шаблон отделяет конструирование объекта от его представления, так что в результате одного и того же процесса конструирования могут получаться разные представления.
Уместность применения
Шаблон следует применять, если:
-
Алгоритм создания сложного объекта не должен зависеть от того, из каких частей состоит объект и как они стыкуются между собой
-
Процесс конструирования должен обеспечивать различные представления конструируемого объекта
Преимущества, достигаемые при использовании данного шаблона
Данный шаблон:
-
Позволяет изменять внутреннее представление продукта конструирования
-
Изолирует код, реализующий конструирование и представление
-
Дает более тонкий контроль над конструированием объекта
Недостатки данного шаблона
Конкретный строитель жестко связан с порождаемым им объектом, поэтому при внесении изменений в класс продукта скорее всего будет необходимо внести соответствующие изменения в класс-строитель.
Реализация
Mutator.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace BuilderPattern
{
public interface Mutator
{
void SetLegs();
void SetTail();
void SetSwim();
void SetRoar();
Pet GetPet();
}
}
Pet.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace BuilderPattern
{
public class Pet
{
public int legs;
public bool tail;
public bool is_swimming;
public string roar;
public void Roar() {Console.WriteLine(this.roar);}
}
}
Cat.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace BuilderPattern
{
class Cat:Mutator
{
private readonly Pet Animal = new Pet();
public Pet GetPet() { return Animal; }
public void SetLegs()
{
Animal.legs = 4;
}
public void SetTail()
{
Animal.tail = true;
}
public void SetSwim()
{
Animal.is_swimming = true;
}
public void SetRoar()
{
Animal.roar = "Meow!!!";
}
}
}
Dog.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace BuilderPattern
{
class Dog:Mutator
{
private readonly Pet Animal = new Pet();
public Pet GetPet() { return Animal; }
public void SetLegs() {
Animal.legs = 4;
}
public void SetTail() {
Animal.tail = true;
}
public void SetSwim() {
Animal.is_swimming = true;
}
public void SetRoar() {
Animal.roar = "Bark!!!";
}
}
}
Parrot.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace BuilderPattern
{
class Parrot:Mutator
{
private readonly Pet Animal = new Pet();
public Pet GetPet() { return Animal; }
public void SetLegs()
{
Animal.legs = 2;
}
public void SetTail()
{
Animal.tail = true;
}
public void SetSwim()
{
Animal.is_swimming = false;
}
public void SetRoar()
{
Animal.roar = "Chik-chirik!!!";
}
}
}
AnimalOwner.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace BuilderPattern
{
class AnimalOwner
{
Mutator mutator;
public AnimalOwner(Mutator mut) { this.mutator = mut; }
public Pet Mutate() {
mutator.SetLegs();
mutator.SetTail();
mutator.SetSwim();
mutator.SetRoar();
return mutator.GetPet();
}
}
}
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace BuilderPattern
{
class Program
{
static void Main(string[] args)
{
Cat cat = new Cat();
AnimalOwner ao = new AnimalOwner(cat);
Pet pet = ao.Mutate();
pet.Roar();
Console.ReadLine();
}
}
}
}
}
}
UML-диаграмма классов
Диаграмма последовательностей
Литература
-
Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж. Приемы объектно-ориентированного проектирования. Паттерны проектирования. — СПб: Питер, 2001. — 368 с.: ил. (Серия «Библиотека программиста»)
-
http://en.wikipedia.org/wiki/Builder_pattern
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.