为什么这个单例看起来很违和啊?求指教。
要对接一个系统,然后经常要实例化一个对象给对方。这个对象的参数,比如后期ip会调整,所以做成了可配置的。考虑到经常用到的是同一个对象,就采用单例模式,只是单纯想减少实例化对象的数量而已。下面是简化的代码,但为什么这个单例看起来,很违和。我到底是违反了什么原则?
package com.forezp;
/**
* Created by 76549 on 2018/9/24.
*/
public class Config {
private int token;
private String ip;
private static Config config=null;
/**
* 防止其他引用
*/
private Config(){
}
public static Config getConfig(String ip, int token){
if(config==null){
synchronized (Config.class){
/* if(config==null){*/
config=new Config();
config.token=token;
config.ip=ip;
/* }*/
}
}else{
config.token=token;
config.ip=ip;
}
return config;
}
public String toString(){
return ip+token;
}
public static void main(String[] args) {
Config config=Config.getConfig("a",1);
System.out.println(config.toString());
Config config1=Config.getConfig("a",1);
System.out.println(config1.toString());
Config config2=Config.getConfig("b",2);
System.out.println(config2.toString());
}
}