精华内容
下载资源
问答
  • 软件设计原则

    2017-08-13 14:33:46
    软件设计原则 设计原则
    1.开放封闭原则
    对扩展开放,修改封闭。
    实际运用:
    策略模式,比如购买业务流程服务。底层很多业务购买分别实现这个接口或抽象类,有新需求只要扩展这个接口。
    而某个业务购买要修改也只需修改对应实现类,不会影响其它类。

    2.kiss原则
    设计要保持简单。
    比如,redis sentinal + twemproxy方案架构。新介入的组件太多,方案变得复杂。

    3.面向接口编程

    3.里氏替代原则
    子类能够替换父类或接口,能够保证正常工作。
    这条不满足,则也就谈不上面向接口编程了。

    4.单向无环依赖
    即类之间或服务之间不应该存在环形调用的情况。
    反例,交易调某个业务,某个业务又反过来调用交易中的订单创建服务。
    有环调用导致调用依赖复杂。存在a系统及b系统,如果有相互调用依赖,则无论先启哪个服务都会存在调用失败的情况。

    5.单一职责,高内聚,低耦合
    一个类只负责做好它自己的事情,职责尽量少。这样好处是依赖不会太多,不会因为所依赖的服务或类改变而受影响。
    再往上一层就是服务的高内聚,低耦合。
    反例:交易view层及相应产品业务都在一个项目工程。

    6.依赖倒置原则
    高层调用方不依赖于被调用方的实现。
    比如:dubbo的protocal层不能因为底层切换了mina或netty而不能使用。
    项目中,就是一个浏览器调用不能依赖于服务器实现(tomcat或者jetty),而应该依赖于双方的一个通用约定http协议。

    7.契约编程
    服务提供方应该明确:
    1.需要什么参数
    2.输出什么结果,会有哪些异常点,能够保证什么,不能保证什么

    8.ioc
    即对象间依赖的管理由容器控制。
    spring的ioc。

    9.公用功能/服务抽离,关注点分离
    将一些公用的功能/服务拆分出来共用。
    例:用户服务可能共用,所以通常将它作为一个分布式服务供外部调用。
    事务几乎所有功能都会用到,所有将事务管理功能抽离出来以便共用。



    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,454
精华内容 6,581
关键字:

软件设计原则