美文网首页
Java中的Facade模式

Java中的Facade模式

作者: shawnxjf | 来源:发表于2017-11-20 21:57 被阅读0次

什么是Facade模式

随着系统越来越复杂,我们需要把细节隐藏起来,给客户端提供一个统一的接口。在这种需求下facade模式诞生了。该模式比较简单,我们只需要在系统变得复杂把它运用上来,这样底层跟客户端就能够很大程度上解耦。

比如你基于平台做业务开发,那么一种很多的方式是,平台把所有底层逻辑封装进facade 模式。开发着只需要通过facade 就可以知道平台大部分功能。它相当于开发者与平台之间的一种约定。

facade 模式大概框架

facade的基本架构:

public class SystemFacade()
{ 
    subSystemImpl1;
    subSystemImpl2;
    subSystemImpl3;
   
   public void runSystem()
   {
       subSystemImpl1.run();
       subSystemImpl2.run();
       subSystemImpl3.run();
   }
}

1.通过SystemFacade,我们只需要调用runSystem接口就可以把所有子系统跑起来。

我们可以让SystemFacade实现其接口,让其拥有接口对象。

public interface SystemFacade extends  SubSystem1,SubSystem2,SubSystem3()
{ 
   public void runSystem();
}
public class SystemFacadeImpl implements  SystemFacade()
{ 
   subSystem1;
   subSystem2;
   subSystem3;

   public void runSystem()
   {
       subSystem1.run();
       subSystem2.run();
       subSystem3.run();
   }
}

Facade模型在工作中的应用

public interface ServiceFacade extends MetaDataService, FunctionPrivilegeService, LogService, ApprovalFlowService, ValidateRuleService,...... {
    <T> void registerService(Class<T> var1, T var2);

    <T> T getService(Class<T> var1);
    ......

    <A, T> T triggerAction(ActionContext var1, A var2);
}
@Service("serviceFacade")
public class ServiceFacadeImpl implements ServiceFacade {
    private static final Logger log = LoggerFactory.getLogger(ServiceFacadeImpl.class);
    private Map<Class<?>, Object> serviceMap = Maps.newHashMap();
    @Autowired
    private MetaDataService metaDataService;
    @Autowired
    private ExportService exportService;
    ......
    }

相关文章

网友评论

      本文标题:Java中的Facade模式

      本文链接:https://www.haomeiwen.com/subject/xfvbvxtx.html