多例设计模式与枚举

package com.anby;

public class mode {
	public enum student{
		man,woman;

	}
	public enum student1{
		man("男"),woman("女");
		
		//枚举中不能直接定义成员,必须要首先定义枚举常量才能生命枚举中的成员
		//也就是说,枚举相当于多例模式,只是简化了书写
		//枚举常量 默认 被static finaly修饰
		
		private String value;
		private student1(String str)
		{
			this.value=str;
		}
		
	}
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Person man=Person.man;
		Person woman=Person.woman;
		Person woman2=Person.woman;
		
		System.out.println(man);
		System.out.println(woman);
		System.out.println(woman2); //此时打印的woman=woman2
		
		
		
		//这里有点绕。。
		//调用的是子类的方法
	   System.out.println(man.getAge());
		System.out.println(woman.getAge());
		
	}

}

abstract class    Person
{
	//私有化构造函数,通过内部成员进行初始化--传男 初始化男人,传女 初始化女人
	
	
	//此时,对男女的年龄进行设置(通过内部类),在本类中提供一个抽象方法,用于外部访问该属性
	
	
	//通过内部类,对年龄进行设置,外层类的抽象方法只是为了让本类型的实例进行访问
	public static Person man=new Person("男"){   //这里也说明了,抽象类的内部类,可以对外部抽象类调用构造函数
		  public   int getAge()
		  {
			  return 20;
		  }
	};
	
	public static Person woman=new Person("女"){
		  public   int getAge()
		  {
			  return 22;
		  }
	};
	
	
	private String value;
    private  Person(String value)
    {
    	this.value=value;
    }
    public abstract  int getAge(); //该抽象方法只是为了让实例调用该内部类中实现的方法
    
}

  

原文地址:https://www.cnblogs.com/anbylau2130/p/3025344.html