Академический Документы
Профессиональный Документы
Культура Документы
Raport
Lucrarea de laborator Nr.1
la disciplina:
Ingineria produselor program
Tema:
Implementarea abloanelor de proiectare creaionale
Chiinu 2017
Cuprins
ablonul Singletone....................................................................................................................... 3
ablonul Singletone
Motivaie: ntr-un sistem de operare: n exista un sistem de fiiere n exista un singur manager de
ferestre n.
Aplicabilitate: cnd trebuie s existe exact o instanta clientii clasei trebuie sa aiba acces la instanta
din orice punct bine definit abloane de proiectare
Structura:
Participant: Singleton
colaborari: clientii clasei
Consecine: acces controlat la instanta unica
reducerea spaiului de nume (eliminarea variab. globale)
permite rafinarea operaiilor si reprezentrii
permite un numar variabil de insante
mai flexibila dect operaiile la nivel de clas (statice)
Implementare:
public class Player
{
private static Player _player;
public int Score { get; set; } = 0;
private Player()
{
return _player;
}
}
Diagrama de clase poate fi analizata in figura 1.
Sablonul prototip
Sablonul prototype este un sablon creational. Este utilizat cind tipul obiectelor pentru creare este
determinat de o instant prototip, care este clonat pentru a produce obiect nou. Sablonul este
utilizat pentru:
Evitarea costului de a crea obiecte noi in mod standard utilizind cuvintul cheie new atunci
cind resursele sunt costisitoare.
Pentru a implementa sablonul, se declara o clasa de baza abstracta care specifica metoda clone
care implementeaza clonarea obiectului.
public abstract class Employee
{
public string Name { get; set; }
public string Role { get; set; }
public double Experience { get; set; }
public string Prefered_language { get; set; }
Factory method
Definirea intefetei pentru crearea obiectului, dar subclasele decid care clasa de instantiate.
Factory Method permite subclaselor sa instantieze obiecte.
public CharacterFactory()
{
_hero = false;
_orc = false;
_zombi = false;
}
if (role == CharacterRoles.Hero)
{
if (!_hero)
{
character = new HeroCharacter();
_hero = !_hero;
_characters.Add(CharacterRoles.Hero, character);
}
else
{
var ch = _characters.Where(kvp => kvp.Key ==
CharacterRoles.Hero).Select(x => x.Value).Single();
character = ch.Clone();
}
}
else if (role == CharacterRoles.Orc)
{
if (!_orc)
{
character = new OrcCharacter();
_orc = !_orc;
_characters.Add(CharacterRoles.Orc, character);
}
else
{
var ch = _characters.Where(kvp => kvp.Key ==
CharacterRoles.Orc).Select(x => x.Value).Single();
character = ch.Clone();
}
}
else if (role == CharacterRoles.Zombi)
{
if (!_zombi)
{
character = new ZombiCharacter();
_zombi = !_zombi;
_characters.Add(CharacterRoles.Zombi, character);
}
else
{
var ch = _characters.Where(kvp => kvp.Key ==
CharacterRoles.Zombi).Select(x => x.Value).Single();
character = ch.Clone();
}
}
return character;
}
}
Diagrama de clase a sablonului este prezentata in figura 3.
Figura 3 - Diagrama de clase a sablonului factory method