兄弟,我抄了一个简单工厂模式你看行不!多数情况,所创建对象的本质,可能会根 据程序的需要发生改变。把一个创建过程提到一个特定的“创建者” 类中,可能增强程序的灵活性。6种创建模式: 工厂方法 简单工厂方法 抽象工厂方法 构造器模式 原型模式 单例模式 简单工厂模式: 根据所提供的数据返回某个父类的一个 实例:一个简单工厂登记表单,允许按照不同格式 名 姓 姓, 名//我们希望通过名和姓之间有,来区分顺序 先写个基类; 再定义二个子类; 一个处理名字无,子类 一个处理名字有,子类一个创建对象的类; <判断是否有,调用不同子类对象> /////////////////////////////////////public class Namer { //base class extended by two child classes protected String last; //split name protected String first; //stored here public String getFirst() { return first; //return first nmae } public String getLast() { return last; //return last name } }////////////////////////////////////public class FirstFirst extends Namer { //extracts first name from last name //when separated by a space public FirstFirst(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 = ""; // if no space last = s; // put all in last name } } }////////////////////////////////// public class LastFirst extends Namer { // extracts last name from first name // when separated by a comma 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; //if no comma, first = ""; //put all in last name } } }////////////////////////////// public class NamerFactory { //Factory decides which class to return based on //presence of a comma public Namer getNamer(String entry) { //comma determines name order int i = entry.indexOf(","); if (i > 0) return new LastFirst(entry); else return new FirstFirst(entry); } }
据程序的需要发生改变。把一个创建过程提到一个特定的“创建者”
类中,可能增强程序的灵活性。6种创建模式:
工厂方法
简单工厂方法
抽象工厂方法
构造器模式
原型模式
单例模式
简单工厂模式:
根据所提供的数据返回某个父类的一个
实例:一个简单工厂登记表单,允许按照不同格式
名 姓
姓, 名//我们希望通过名和姓之间有,来区分顺序
先写个基类;
再定义二个子类;
一个处理名字无,子类
一个处理名字有,子类一个创建对象的类;
<判断是否有,调用不同子类对象>
/////////////////////////////////////public class Namer {
//base class extended by two child classes
protected String last; //split name
protected String first; //stored here public String getFirst() {
return first; //return first nmae
}
public String getLast() {
return last; //return last name
}
}////////////////////////////////////public class FirstFirst
extends Namer {
//extracts first name from last name
//when separated by a space
public FirstFirst(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 = ""; // if no space
last = s; // put all in last name
}
}
}//////////////////////////////////
public class LastFirst extends Namer {
// extracts last name from first name
// when separated by a comma
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; //if no comma,
first = ""; //put all in last name
}
}
}//////////////////////////////
public class NamerFactory {
//Factory decides which class to return based on
//presence of a comma
public Namer getNamer(String entry) {
//comma determines name order
int i = entry.indexOf(",");
if (i > 0)
return new LastFirst(entry);
else
return new FirstFirst(entry);
}
}