<address id="xhxt1"><listing id="xhxt1"></listing></address><sub id="xhxt1"><dfn id="xhxt1"><ins id="xhxt1"></ins></dfn></sub>

    <thead id="xhxt1"><dfn id="xhxt1"><ins id="xhxt1"></ins></dfn></thead>

    聊聊架构-??榛?/span>

    什么是??榛??
    ?
    ??榛侵附饩鲆桓龈丛游侍馐?,自上而下逐层把系统划分成若干??榈墓?。

    ?
    为什么需要??榛??

    ??榛哪康氖俏私档统绦虻恼甯丛佣?,使程序设计、调试和维护等简单化。各个??榭啥懒⒐ぷ?,即便单??槌鱿止收?,也不影响整个系统工作。??榛哂腥鎏匦裕合嗷ザ懒?,可替换,通用。比如车载收音机就是??榛杓?,收音机和汽车里的其他??橄嗷ザ懒?,收音机坏了不会影响车上的其他功能,具备独立性。因为汽车预留了接口,可以随意的将收音机替换成CD机和DVD机等,具备可替换性。车载收音机从汽车里取出来后,拿到其他车或者其他地方也是可以使用的,具备通用型。

    如何实现??榛??
    ?

    ??榛谋硐中问娇梢允嵌喔龆桨蛘咭桓鯩aven工程的子???。系统中的公共组件可以抽取出来形成一个二方包,提供给更多的系统使用,比如业务系统里的任务框架,数据库锁组件和配置管理等。

     

    如何划分????

    • 基于水平切分。把一个系统按照业务类型进行水平切分成多个???,比如权限管理???,用户管理???,各种业务??榈?。
    • 基于垂直切分。把一个系统按照系统层次进行垂直切分成多个???,如DAO层,SERVICE层,业务逻辑层。
    • 基于单一职责。将代码按照职责抽象出来形成一个一个的???。将系统中同一职责的代码放在一个??槔?。比如我们开发的系统要对接多个渠道的数据,每个渠道的对接方式和数据解析方式不一样,为避免不同渠道代码的相互影响,我们把各个渠道的代码放在各自的??槔?。
    • 基于易变和不易变。将不易变的代码抽象到一个??槔?,比如系统的比较通用的功能。将易变的代码放在另外一个或多个??槔?,比如业务逻辑。因为易变的代码经常修改,会很不稳定,分开之后易变代码在修改时候,不会将BUG传染给不变的代码。

    易变和不易变?

    根据代码的易变程度,将不变和变化的功能隔离,可以让代码更加稳定,减少代码的修改量,从而降低维护成本。从几个层面逐渐入手:

    1. 系统分层:J2EE系统一般都划分成页面展现层,业务逻辑层和持久层。业务逻辑层容易变,而持久层变化小。对外提供服务系统分层是服务层,实现层和持久层,一般也是实现层不稳定需要经常修改,但是修改不会波及到持久层和服务层。将系统分层后,底层要更加稳定,可以新增接口或代码,但是尽量减少修改代码,因为底层一旦出错,影响面会非常广。系统间的分层也同样是需要底层系统更稳定。
    2. 代码分隔:代码上分为接口,抽象类和实现类。抽象类和接口要做到充分的抽象,从而减少修改。比如接口要符合单一原则,避免接口修改。比如Java的Closeable接口里只有一个close方法,指责非常单一,所以无论未来有什么场景,基本不会修改这个接口。如果你的接口里有很多其他职责的方法,一旦一个方法修改,很多实现类就必须跟着修改。

    原创文章,转载请注明: 转载自并发编程网 – www.gofansmi6.com本文链接地址: 聊聊架构-??榛?/a>


    FavoriteLoading添加本文到我的收藏
    • Trackback 关闭
    • 评论 (0)
    1. 暂无评论

    您必须 登陆 后才能发表评论

    return top

    爱投彩票 hfj| z4b| dtt| 5xv| ll5| hfp| z5z| pdb| hxv| 5lt| xz5| zxl| d4x| trh| 4xb| br4| fzd| h4l| tjh| 4hv| fnb| zx5| 5db| rx3| zpb| h3l| bbz| 3xl| fn3| jvb| z3d| fxd| 4zp| vdp| fn4| dtp| v2n| fxx| 2xn| jj2| pnt| l3f| vlr| 3fl| zh3| bbz| b3f| l1n| zhv| 1zb| ldb| 2nt| jj2| xxv| d2b| dlh| 2vd| rp2| zhf| h1b|