工厂模式要点:
1,一个工厂类
2,一个抽象父类:里面有所有产品的公用方法,及需要子产品实现的抽象方法,此抽象方法决定各个子类的功能;
3,多个子类:继承抽象父类,实现抽象方法,
工厂类代码:
package test.com.factory;
/**
* @author ChenY
* 工厂类
*/
public class FactoryObj {
public static Product FactoryMethod(String proName) {
Product pro ;
if("A".equalsIgnoreCase(proName)) {
pro = new ApplePro();
}else if("B".equalsIgnoreCase(proName)){
pro = new Banana();
}else{
pro = new Blank();
}
return pro;
}
}
抽象父类:
package test.com.factory;
/**
* @author ChenY
* 产品类 所有子类的父类,有所有产品抽象方法
*/
public abstract class Product {
//所有产品类的公共方法
public void methodSame() {
String proName = methodDiff();
if("blank".equals(proName)) {
System.out.println("查无此产品");
}else {
System.out.println("此产品是:" + proName);
}
}
//声明抽象业务方法 (抽象方法子类必须必须实现)
public abstract String methodDiff();
}
子类1:
package test.com.factory;
/**
* @author ChenY
* 产品类:苹果
*/
public class ApplePro extends Product{
@Override
public String methodDiff() {
return "apple";
}
}
子类2:
package test.com.factory;
/**
* @author ChenY
* 产品类:香蕉
*/
public class Banana extends Product {
@Override
public String methodDiff() {
// TODO Auto-generated method stub
return "banana";
}
}
子类3:
package test.com.factory;
public class Blank extends Product {
@Override
public String methodDiff() {
// TODO Auto-generated method stub
return "blank";
}
}
客户端代码:
package test.com.factory;
/**
* @author ChenY
* 客户端
*/
public class client {
public static void main(String[] args) {
String proName = "c";
Product pro = FactoryObj.FactoryMethod(proName);
pro.methodSame();
}
}