Sunteți pe pagina 1din 8

Universitatea Tehnic a Moldovei

Catedra Automatic i Tehnologii Informaionale

Raport
Lucrarea de laborator Nr.1

la disciplina:
Ingineria produselor program
Tema:
Implementarea abloanelor de proiectare creaionale

A afectuat: st.gr.Ti-141 M. Ghelas

A verificat lect. sup. S. Scrob

Chiinu 2017
Cuprins

ablonul Singletone....................................................................................................................... 3

Sablonul prototype ........................................................................................................................ 4

Factory method ............................................................................................................................. 6

Builder si Abstract factory ........................................................................................................... 7


Tema: Implementarea abloanelor creaionale Singletone, Factory method, Abstract factory,
Prototype, Builder.

ablonul Singletone

Intenia: proiectarea unei clase cu un singur obiect (o singura instan)

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 Datasource {

private String dbDriverName = "com.mysql.jdbc.Driver";


private String dburl = "jdbc:mysql://localhost:3306/db_name";
private String dbuser = "db_user";
private String dbpassword = "db_password";

private static Datasource instance;

public static Datasource getInstance() {

if (instance == null) {
instance = new Datasource();
}

return instance;
}
}

public class Main {


public static void main(String[] args) {
Datasource ds = Datasource.getInstance();

System.out.println(ds);

}
}

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.
interface Prototype {

public Prototype getClone();

class EmployeeRecord implements Prototype{

private int id;


private String name, designation;
private double salary;
private String address;

public EmployeeRecord(){
System.out.println(" Employee Records of Oracle Corporation ");
System.out.println("---------------------------------------------");

System.out.println("Eid"+"\t"+"Ename"+"\t"+"Edesignation"+"\t"+"Esalary"+"\t\
t"+"Eaddress");

public EmployeeRecord(int id, String name, String designation, double


salary, String address) {

this();
this.id = id;
this.name = name;
this.designation = designation;
this.salary = salary;
this.address = address;
}

public void showRecord(){

System.out.println(id+"\t"+name+"\t"+designation+"\t"+salary+"\t"+address);
}

@Override
public Prototype getClone() {

return new EmployeeRecord(id,name,designation,salary,address);


}
}

Factory method
Definirea intefetei pentru crearea obiectului, dar subclasele decid care clasa de instantiate.
Factory Method permite subclaselor sa instantieze obiecte.

abstract class Plan{


protected double rate;
abstract void getRate();

public void calculateBill(int units){


System.out.println(units*rate);
}
}

class CommercialPlan extends Plan {


//@override
public void getRate() {
rate = 7.50;
}
}

class GetPlanFactory{

//use getPlan method to get object of type Plan


public Plan getPlan(String planType){
if(planType == null){
return null;
}
if(planType.equalsIgnoreCase("DOMESTICPLAN")) {
return new DomesticPlan();
}
else if(planType.equalsIgnoreCase("COMMERCIALPLAN")){
return new CommercialPlan();
}
else if(planType.equalsIgnoreCase("INSTITUTIONALPLAN")) {
return new InstitutionalPlan();
}
return null;
}
}//end of GetPlanFactory class.
Builder si Abstract factory
Abstract factory
Asigur o interfa pentru crearea familiilor de obiecte legate sau dependente far de a specifica
clasa lor concret.
Builder
Separa constructia obiectelor complexe de reprezentare pentru ca aceelasi process de constructie
sa creeze reprezentari diferite.

interface AbstractWidgetFactory{
public Window createWindow();
}

public interface Window{


public void setTitle(String text);
public void repaint();
}

public class MsWindowsWidgetFactory implements AbstractWidgetFactory{


//create an MSWindow
public Window createWindow(){
MSWindow window = new MSWindow();
return window;
}
}

public class MSWindow implements Window {


@Override
public void setTitle(String text) {
}
public void repaint() {
//MS Windows specific behaviour
}
@Override
public String toString() {
return "This is a windows window";
}
}

BUILDER
public class GUIBuilder{
public void buildWindow(AbstractWidgetFactory widgetFactory){
Window window = widgetFactory.createWindow();
window.setTitle("New Window");
}
}
Concluzie
abloanele ne ajut pentru proiectarea corect a arhitecturii unei aplicaii. abloanele se
utilizeaz n dependen de problemele de proiectare care apar n procesul dezvoltrii unui proiect.
ablonul Singleton se utilizeaz pentru a rezolva problema de crearea unei singure
instane a unei clase. Abstract factory creaz o instan a mai multor familii de clase. Builder separ
reprezentarea obiectului de construirea lui. Factory method creaza instane a mai multor clase
derivate. Prototype creaz clone de obiecte pentru a utiliza resursele eficient.

S-ar putea să vă placă și