Java设计模式--多例模式与枚举

1.不管是单例模式还是多例模式,本质都是构造方法私有化,内部产生实例化对象。

2.多例模式的使用场景:

a) 描--述一周时间数的类,只能有7个对象(周一到周日)

b) 描--述性别的类,只能有2个对象(男和女)

3.多例模式演示

package test;

public class TestMutiton {
	public static void main(String[] args) {
		Sex sex = Sex.getInsatnce(1);
		System.out.println(sex);
	}
}
class Sex{
	private String title;
	private static final Sex MALE = new Sex("男");
	private static final Sex FEMALE = new Sex("女");
	private static final int MALE_CH = 1;
	private static final int FEMALE_CH = 2;
	
	public static Sex getInsatnce(int ch) {
		switch (ch) {
		case MALE_CH:
			return MALE;  //返回男性实例化对象
		case FEMALE_CH:
			return FEMALE;  //返回女性实例化对象
		default:
			return null;
		}
	}
	private Sex(String title) {
		this.title = title;
	}
	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return this.title;
	}
}

4. 多例模式的改进,枚举enum

package test;
public class TestMutiton {
	public static void main(String[] args) {
		Sex sex = Sex.男;
		System.out.println(sex);
	}
}
enum Sex{
	男,女;
}

(以上代码只是为了跟上一个代码实现同一个功能,规范的写法枚举类中的对象一定是英文的,并且是全大写字母)

package test;
public class TestMutiton {
	public static void main(String[] args) {
		Sex sex = Sex.MAN;
		System.out.println(sex);
	}
}
enum Sex{
	MAN,FEMALE;
}

5. 实现中文输出的另一种方法,重写Enum构造方法

package test;
public class TestMutiton {
	public static void main(String[] args) {
		Sex sex = Sex.MAN;
		System.out.println(sex);
	}
}
enum Sex{
	MAN("男"),FEMALE("女");
	private String type;
	private Sex(String type) {
		this.type = type;
	}
	@Override
	public String toString() {
		return this.type;
	}
}

 

 

 

你可能感兴趣的:(设计模式,设计模式,多例模式,枚举)