简单工厂
又称为静态工厂,因为他里面的方法一般均为静态方法
接口
public interface Api {
void test(String s);
}
实现A
public class ImplA implements Api {
@Override
public void someOperation(String s) {
System.out.println("ImplA s = "+s);
}
}
实现B
public class ImplB implements Api {
@Override
public void someOperation(String s) {
System.out.println("ImplB s = "+s);
}
}
客户端
public class Client {
public static void main(String[] args) {
Api api = Factory.createApi(1);
api.someOperation("你好");
}
}
简单工厂是用来创建接口,抽象类,具体类的对象
使用场景:在工厂里选择实现
附:简单工厂类图
外观模式
外观模式是对一组子系统接口的包装
表现层
public class Presentation {
public void generate(){
ConfigModel cm = ConfigManager.getInstance().getConfigData();
if(cm.isNeedGenPresentation()){
System.out.println("正在生成表现层代码");
}
}
}
逻辑层
public class Business {
public void generate(){
ConfigModel cm = ConfigManager.getInstance().getConfigData();
if(cm.isNeedGenBusiness()){
System.out.println("正在生成逻辑层代码");
}
}
}
dao层
public class Dao {
public void generate(){
ConfigModel cm = ConfigManager.getInstance().getConfigData();
if(cm.isNeedGenDao()){
System.out.println("正在生成数据层代码");
}
}
}
配置管理
public class ConfigManager {
private ConfigManager(){}
private static ConfigManager manager = null;
private static ConfigModel cm = null;
public static ConfigManager getInstance(){
if(manager == null){
manager = new ConfigManager();
cm = new ConfigModel();
}
return manager;
}
public ConfigModel getConfigData(){
return cm;
}
}
配置模型数据
public class ConfigModel {
private boolean needGenPresentation = true;
private boolean needGenBusiness = true;
private boolean needGenDao = true;
public boolean isNeedGenPresentation() {
return needGenPresentation;
}
public void setNeedGenPresentation(boolean needGenPresentation) {
this.needGenPresentation = needGenPresentation;
}
public boolean isNeedGenBusiness() {
return needGenBusiness;
}
public void setNeedGenBusiness(boolean needGenBusiness) {
this.needGenBusiness = needGenBusiness;
}
public boolean isNeedGenDao() {
return needGenDao;
}
public void setNeedGenDao(boolean needGenDao) {
this.needGenDao = needGenDao;
}
}
外观
public class Facade {
public void generate(){
new Presentation().generate();
new Business().generate();
new Dao().generate();
}
}
使用外观
public class Client {
public static void main(String[] args) {
new Facade().generate();
}
}
附:外观模式类图