Читайте также:
|
|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace NewYear
{
class Program
{
static void Main(string[] args)
{
int boys = 10;
int girls = 10;
SantaClaus santa = SantaClaus.CallSantaClaus();
SnowMaiden maiden = SnowMaiden.CallSnowMaiden();
List<Box> forBoys = new List<Box>();
List<Box> forGirls = new List<Box>();
for (int i = 0; i < boys; i++) forBoys.Add(new Box(santa));
for (int i = 0; i < girls; i++) forGirls.Add(new Box(maiden));
foreach (Box tmp in forBoys)
Console.WriteLine(tmp.LookInTheBox());
foreach (Box tmp in forGirls)
Console.WriteLine(tmp.LookInTheBox());
Console.ReadKey();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace NewYear
{
interface GiftFactory
{
Toy AddToy();
Candy AddCandy();
}
class SantaClaus: GiftFactory
{
private Random myRand = new Random();
private static SantaClaus _SantaClaus=null;
private SantaClaus() { }
public static SantaClaus CallSantaClaus()
{
if (_SantaClaus == null)
_SantaClaus = new SantaClaus();
return _SantaClaus;
}
public Toy AddToy()
{
if (myRand.Next(2) == 0)
return new Pistol();
else
return new Car();
}
public Candy AddCandy()
{
return new BlueCandy();
}
}
class SnowMaiden: GiftFactory
{
private Random myRand = new Random();
private static SnowMaiden _SnowMaiden=null;
private SnowMaiden() { }
public static SnowMaiden CallSnowMaiden()
{
if (_SnowMaiden == null)
_SnowMaiden = new SnowMaiden();
return _SnowMaiden;
}
public Toy AddToy()
{
if (myRand.Next(2) == 0)
return new Puppet();
else
return new Bear();
}
public Candy AddCandy()
{
return new PinkCandy();
}
}
interface Toy
{
string GetInfo();
}
class Pistol: Toy
{
public string GetInfo()
{
return "Пістолет";
}
}
class Car: Toy
{
public string GetInfo()
{
return "Автомобіль";
}
}
class Puppet: Toy
{
public string GetInfo()
{
return "Лялька";
}
}
class Bear: Toy
{
public string GetInfo()
{
return "Медвідь";
}
}
interface Candy
{
string GetInfo();
}
class BlueCandy: Candy
{
public string GetInfo()
{
return "Цекерки(блакитна обгортка)";
}
}
class PinkCandy: Candy
{
public string GetInfo()
{
return "Цекерки(рожева обгортка)";
}
}
class Box
{
private Toy _toy;
private Candy _candy;
public Box(GiftFactory factory)
{
_toy = factory.AddToy();
_candy = factory.AddCandy();
}
public string LookInTheBox()
{
return ("В подарунковій коробці:\n" + _toy.GetInfo() + "\n"
+ _candy.GetInfo() + "\n");
}
}
}
Скріншоти
Рис. 4 Результати виконання другої програми
Висновок
У даній лабораторній роботі я використав шаблониАбстрактна фабрика, Одинак, Прототип, Фабричний метод. Обидві програми працюють коректно.
Хоч і без шаблонів проектування можна обійтися, про те вони є зручними у вирішенні деяких задач. Кожеш шаблон є зручним для певного типу задач.
Фабричний Метод вирішує, яку реалізацію інстанціювати. Вирішують або нащадки фабричного методу, або він сам, приймаючи якийсь параметер.
Прототип дозволяє нам створювати копії об’єктів, що уже визначені на стадії дизайну (наприклад, список можливих типів зустрічей) або ж визначаються під час виконання програми («п’ятнична вечірка»), таким чином, відпадає необхідність заповняти всі елементи об’єкту від «А» до «Я». Вже створені або визначені екземпляри об’єкту називаються прототипічними екземплярами (prototypical instances).
Абстрактна фабрика надає простий інтерфейс для створення об’єктів, які належать до того чи іншого сімейства.
Одинак забезпечує існування єдиного екземпляру класу та єдиного доступу до нього.
Дата добавления: 2015-11-14; просмотров: 33 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Текст 1-ї програми | | | Стоимость набора – 763 руб. |