Java设计模式之单例模式

java单例模式就是这个类只有一个实例,而且是自己创建的,对整个系统只提供一个实例对象。

单例模式的作用:

1、控制资源的使用,通过控制线程的同步来控制资源的并发访问,因为整个系统只有一个对象。

2、控制实例数量,控制资源

3、将这个实例对象作为一个共享资源,提供给线程之间使用

主要优点:

  A.提供了对唯一实例的受控访问。

  B.由于在系统内存中只存在一个对象,因此可以节约系统资源,对于一些需要频繁创建和销毁的对象单例模式无疑可以提高系统的性能。

  C.允许可变数目的实例。

主要缺点:

  A.由于单利模式中没有抽象层,因此单例类的扩展有很大的困难。

  B.单例类的职责过重,在一定程度上违背了“单一职责原则”。

  C.滥用单例将带来一些负面问题,如为了节省资源将数据库连接池对象设计为的单例类,可能会导致共享连接池对象的程序过多而出现连接池溢出;如果实例化的对象长时间不被利用,系统会认为是垃圾而被回收,这将导致对象状态的丢失。

//构造方法私有化,内置私有对象,对外提供一个静态方法,通过静态方法访问实例对象

import javax.servlet.http.HttpServletRequest;

import com.ycst.craft4j.base.dto.BaseDTO;
import com.ycst.craft4j.constants.Constants;
import com.ycst.craft4j.system.util.StringUtil;

public class ClientRegDTO extends BaseDTO{

    private ClientRegDTO(){}
    private static ClientRegDTO dto = new ClientRegDTO();;
    
    private String idCardUrl;
    private String idCardNo;
    private String realIcon;
    private String company;
    private String bussinessUrl;
    private String taxUrl;
    private String organizationUrl;
    private String idCardReverseUrl;
    private String iconUrl;
    
    public static ClientRegDTO getInstance(HttpServletRequest request){
        
        dto.setUserId(StringUtil.toInteger(request.getParameter(Constants.REQUEST_DTO_MODEL.USER_ID)));
        dto.setUserType(request.getParameter(Constants.REQUEST_DTO_MODEL.USER_TYPE_CD));
        dto.setAccessToken(request.getParameter(Constants.REQUEST_DTO_MODEL.ACCESS_TOKEN));
        dto.setPlatForm(request.getParameter(Constants.REQUEST_DTO_MODEL.PLATFORM));
        dto.setMobile(request.getParameter(Constants.REQUEST_DTO_MODEL.MOBILE));
        
        dto.setIdCardNo(request.getParameter("idCardNo"));
        dto.setCompany(request.getParameter("company"));
        return dto;
    }

    public String getIdCardUrl() {
        return idCardUrl;
    }

    public void setIdCardUrl(String idCardUrl) {
        this.idCardUrl = idCardUrl;
    }

    public String getIdCardNo() {
        return idCardNo;
    }

    public void setIdCardNo(String idCardNo) {
        this.idCardNo = idCardNo;
    }

    public String getBussinessUrl() {
        return bussinessUrl;
    }

    public void setBussinessUrl(String bussinessUrl) {
        this.bussinessUrl = bussinessUrl;
    }

    public String getTaxUrl() {
        return taxUrl;
    }

    public void setTaxUrl(String taxUrl) {
        this.taxUrl = taxUrl;
    }

    public String getOrganizationUrl() {
        return organizationUrl;
    }

    public void setOrganizationUrl(String organizationUrl) {
        this.organizationUrl = organizationUrl;
    }

    public String getRealIcon() {
        return realIcon;
    }

    public void setRealIcon(String realIcon) {
        this.realIcon = realIcon;
    }

    public String getCompany() {
        return company;
    }

    public void setCompany(String company) {
        this.company = company;
    }

    public String getIdCardReverseUrl() {
        return idCardReverseUrl;
    }

    public void setIdCardReverseUrl(String idCardReverseUrl) {
        this.idCardReverseUrl = idCardReverseUrl;
    }

    public String getIconUrl() {
        return iconUrl;
    }

    public void setIconUrl(String iconUrl) {
        this.iconUrl = iconUrl;
    }
}
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值