从简单工厂模式理解封装隔离

 

从简单工厂模式理解封装隔离...



现在的软件项目都要求可维护性和可复用性。那在代码层面如何做到让自己的代码具有可维护性和可复用性呢?这就需要了解接口了。

这里的接口并非全等价与像java等面向对象语言中的接口类型(虽然采用接口类型可以是实现所说的接口),它更像是一个模块或一个封装体的暴露给外界的一个通道。PS:它可以是接口、抽象类、普通类、方法等,只要它起到了封装隔离的作用。

那什么是封装呢?什么又是隔离呢?

先看一个类图:



如上:

Api是一个接口类型,定义了一个test1方法,Impl实现了接口Api中的方法,然后Client中创建了Api类型的Impl实例,然后直接调用test1方法。

这样看起来很自然,也顺理成章的。其实这里已经在客户端暴露了Impl的实现细节了,这里的接口也没有起到应有的作用--封装隔离。

下面采用简单工厂模式来解决这个问题,如下类图:



红线框中可以看成一个封装体,因为对于Client来说,它并不知道Api的实现细节,这个封装体唯一暴露给外面的是Api接口。从这里可以看出Api接口确实阻断了ImplA等实现类与外界的交互了。在隔离实现类与外界交互的同时其实也就体现了封装。

那为什么需要封装隔离呢?

对有一定开发经历的人来说,肯定遇到过一些特别难维护的代码,有时候难维护并非是业务逻辑的难,而是代码毫无层次感,甚至都找不到类与类之间的关系。此时可能就会重构代码,按照逻辑将经常用的方法封装起来,或者将那些容易被他人修改的却不能被修改的代码封装起来,经过了这样的封装后,代码就分层了,对于外界来说,也看不到那些被封装了的代码,故实现了隔离。

在封装体中,内部的变化不会影响到外部的应用,从而使得系统更加的灵活,层次更加的突出,故具有可维护性和扩展性。


    关注 源码工作室


微信扫一扫关注公众号

0 个评论

要回复文章请先登录注册