Professional Documents
Culture Documents
Factory Pattern
Factory Pattern
1
Factory Method
A Factory pattern is one that returns an instance
of one of several possible classes depending on the data
provided to it.
2
Factory Method - Structure
3
Factory Method - Example
Suppose ,You can enter your name in two ways –
- FirstName LastName
- LastName, FirstName
Example :
- Sandy Smith
- Smith, Sandy
4
Factory Method - Example
5
Factory Method - Example
6
Factory Method - Example
Namer
NameFactory getNamer() LastFirst
FirstLast LastFirst
Smith,Sandy
7
Factory Method - Code
class Namer {
protected String last; //store last name here
protected String first; //store first name here
public String getFirst() {
return first;
}
public String getLast() {
return last;
}
}
8
class FirstLast extends Namer {
public FirstLast(String s) {
int i = s.lastIndexOf(" "); //find sep space
if (i > 0) {
first = s.substring(0, i).trim();
last =s.substring(i+1).trim();
}
else {
first = “”; // put all in last name if no space
last = s;
}
}
}
9
class LastFirst extends Namer {
public LastFirst(String s) {
int i = s.indexOf(","); //find comma
if (i > 0) {
last = s.substring(0, i).trim();
first = s.substring(i + 1).trim();
}
else {
last = s; // put all in last name if no comma
first = "";
}
}
}
10
class NameFactory {
public Namer getNamer(String entry) {
int i = entry.indexOf(",");
if (i>0)
return new LastFirst(entry); //return one class
else
return new FirstLast(entry); //or the other
}
}
11
NameFactory nfactory = new NameFactory();
private void computeName() {
//send the text to the factory and get a class back
namer = nfactory.getNamer(entryField.getText());
txFirstName.setText(namer.getFirst());
txLastName.setText(namer.getLast());
}
12
Factory Method
13
Factory Method - Applicability
Use the Factory Method pattern when
14