软件设计原则

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



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值