Extras din seminar
1.1.FACTORY
· Returneaza o instanta a unei clase (dintre mai multe posibile), in functie de
datele trimise ca parametri. De obicei clasele posibile sunt derivate dintr-o clasa
de baza comuna, si au aceleasi metode, dar implementari diferite.
· Se utilizeaza cand o clasa nu poate anticipa ce clase de obiecte trebuie sa creeze,
si se foloseste de subclase pentru a specifica acest lucru.
· Faciliteaza adaugarea de tipuri noi unui sistem: polimorfismul nu inlatura toate
dificultatile ce pot apare aici- la crearea efectiva de obiecte trebuie specificat
exact constructorul folosit, fiind necesare modificari in diferite puncte ale
programului (uneori dificil de localizat.) Cu Factory, crearea de obiecte este
delegata unei singure clase si doar aici vor apare modificari la extinderea
programului. In rest, acesta foloseste numele generic al metodelor claselor
derivate, fara sa intereseze exact ce versiune a fost apelata.
Exemple.
1. Nume si prenume (J.Cooper)
class Namer {
//a simple class to take a string apart into two names
protected String last; //store last name here
protected String first; //store first name here
public String getFirst() {
return first; //return first name
}
public String getLast() {
return last; //return last name
}
}
class FirstFirst extends Namer { //split first last
public FirstFirst(String s) {
int i = s.lastIndexOf(" "); //find sep space
if (i > 0) {
//left is first name
first = s.substring(0, i).trim();
//right is last name
last =s.substring(i+1).trim();
}
else {
first = ; // put all in last name
last = s; // if no space
}
}
}
class LastFirst extends Namer { //split last, first
public LastFirst(String s) {
int i = s.indexOf(","); //find comma
if (i > 0) {
//left is last name
last = s.substring(0, i).trim();
//right is first name
first = s.substring(i + 1).trim();
}
else {
last = s; // put all in last name
first = ""; // if no comma
}
}
Preview document
Conținut arhivă zip
- ISP Seminar3.pdf