zoukankan      html  css  js  c++  java
  • 1

    最近在写代码时想了这样一个问题,和室友讨论了一番,做了如下总结。
     
    简单来说:service是有状态的,工具类是无状态的,单例可以有状态也可以无状态。
     
    工具类提供静态方法,只要输入一定,输出就是一定的,它不依赖于其它外部的数据,也不保存数据
    例如,字符串的操作,日期格式的转换,json串的转换
     
    Service,虽然它的逻辑是一定的,但是它依赖于外部的数据,可能是其它系统中的(rpc调度),其它数据存储中的(访问mysql,redis),以及本地其它模块的(比如调用其他的service)
    误区:业务代码就必须得放在service里,这种想法是错误的,有些无状态的业务逻辑是可以封装成工具类的
     
    单例,它既可以是有状态,也可以是无状态的。单例首要考虑的是该类的对象在系统中存在一个最合适,但是这种往往都是有状态的,比如数据库连接,qconfig对象,本地文件持有对象,这种只应该有一个对象来持有,而且对象依赖于外部的配置或者数据,这种使用单例再合适不过了。
     
    而如果无状态的也用单例,也无可厚非。例如,对于加解密,如果传入的是明文密文+密钥,那么这种就可以设计成工具类,当然设计成单例也没有什么问题,但是工具类会更好一些
     
    如果只传明文密文,而依赖于外部的密钥,可以设计成单例。
  • 相关阅读:
    docker 加速器配置目录
    php 超时设置笔记
    php socket通过smtp发送邮件(纯文本、HTML,多收件人,多抄送,多密送)
    fabric 安装
    centos7下使用yum安装pip
    【转】linux tar 压缩
    ASP.NET MVC 5 默认模板的JS和CSS 是怎么加载的?
    NHibernate with ASP.NET MVC 入门示例
    Ajax入门
    NHibernate入门
  • 原文地址:https://www.cnblogs.com/43726581Gavin/p/9043834.html
Copyright © 2011-2022 走看看