工厂设计模式
★ 场景和问题
面向接口编程是java编程中的大家所公认的第一原则 接口很重要的一个功能:封装隔离。 接口是功能块或封装块的外观。
Java程序开发讲究面向接口编程,隐藏具体的实现类,可是如何得到接口呢?
通过工厂来获得接口。
工厂的本质是“选择实现”
工厂、接口和实现类之间的技术边界:工厂只负责选择实现,实现类才做真正的实现,
而接口是限定到底实现什么东西和返回什么东西,三者之间分工明确、各负其责。
接口:
package cn.hncu.pattern.factory.dep;
public interface Api {
public String t();
}
实现类:
package cn.hncu.pattern.factory.dep.impl;
import cn.hncu.pattern.factory.dep.Api;
public class Impl1 implements Api{
@Override
public String t() {
return "Impl1";
}
}
package cn.hncu.pattern.factory.dep.impl;
import cn.hncu.pattern.factory.dep.Api;
public class Impl2 implements Api{
@Override
public String t() {
return "Impl2";
}
}
工厂:
package cn.hncu.pattern.factory.dep;
import cn.hncu.pattern.factory.dep.impl.Impl1;
import cn.hncu.pattern.factory.dep.impl.Impl2;
/* 工厂类的命名规范: XXXFactory
* 工厂方法的命名规范:
获得当前类的实例: getInstance(), newInstance(),
工厂类中生产接口: getXXXApi(),createXXXApi()
*/
public class ApiFactory {
private ApiFactory(){
}
public static Api getApi(int type){
if(type==1){
return new Impl1();
}else{
return new Impl2();
}
}
}