SentralLiu

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

1. 设计模式(重点)
 概述:是一套经人反复使用的代码设计经验的总结
       也可以理解为特定问题的特定的解决方案
 
 好处:可读性更强,更容易复用

 设计模式的归类,分三大类:(23种)
 1.对象型模式:对象的创建方式;例如:单例,工厂模式等
 2.结构型模式:组织结构的包装;例如:装饰者模式(处理流),代理模式等
 3.行为型模式:对象的行为监听;例如:观察者模式等 

 1.1 工厂模式(重点)
 概述:从工厂中根据需求,获取产品(对象)  
 两种工厂模式:1.静态工厂; 2.实例工厂
 静态工厂使用:工厂类.静态方法   new 工厂对象.成员方法

class Factory{
	public static Object getObject(Class clazz) throws InstantiationException, IllegalAccessException {
		
		return clazz.newInstance();
	}
}
        //静态工厂+反射=增强灵活性与可维护性;且使得代码变为软编码模式(配置文件灵活变更)
		//分析:Properties加载配置文件,根据输入的编号,得到value
		Properties properties = new Properties();
		properties.load(new FileInputStream("factory.properties"));
		String className = properties.getProperty(num+"");  //获取类名
		
		Class clazz = Class.forName(className);
		Object obj = Factory.getObject(clazz);
		System.out.println(obj);

 1.2 单例(重点)
 单例:
目标:每次获取到的对象都是同一个对象
步骤:
1.通过静态方法返回对象
2.返回的对象是静态属性(静态属性只初始一份)
3.属性私有化
单例中的饿汉式---立即加载的模式
======================饿汉式=======================

class MySingle{
	private MySingle() {}
	
	private static MySingle single = new MySingle();
	public static MySingle getInstance() {
		return single;  //饿汉式
	}
}

====================懒汉式=======================
单例中的懒汉式---延时加载的模式

class MySingle{
	private static MySingle single;
	public static  MySingle getInstance() {
		if(single==null) { //单例懒汉式线程安全提高效率的写法
			synchronized ("lock") {
				if(single==null) {
					System.out.println("实例化对象...");
					single = new MySingle();
				}
				
			}
		}
		
		return single;
		
	}
}

2.枚举(了解)
枚举:应用场景与状态值是一致的
在枚举中提供了多个常量值,可以更方便的使用这些常量值进行逻辑判断
选择:
1.如果状态值不多,直接选择静态常量
2.如果状态值很多,可以使用枚举更方便更安全地使用这些常量值
案例:通过状态值来判断性别

枚举的本质
1.继承Enum的终止类
2.里面的枚举值是静态常量

//枚举应用:
enum MyEnum{
	//枚举值
	S_MAN,S_WOMAN
}

@Deprecated  //过期的注解,定义到类上,类过期;定义到方法上,方法过期
class MyClass{
	@Deprecated
	public void test() {
		
	}
}

//@interface:标注该注解类中只能有属性
@interface Annotation{
	//里面只能写属性
	 String name();  //定义属性未赋值
	 int age() default 30;  //定义属性并赋值
}

public class Test1 {
	public static final int SEX_MAN = 1;
	public static final int SEX_WOMAN = 2;
	
	public static void main(String[] args) {
		/*int sex = Test1.SEX_MAN;
		switch (sex) {
		case Test1.SEX_MAN:
			System.out.println("你选择的是男性");
			break;
		case Test1.SEX_WOMAN:
			System.out.println("你选择的是女性");
			break;
		default:
			System.out.println("您的输入有误~");
			break;
		}*/
		
		MyEnum en = MyEnum.S_MAN;
		switch (en) {
		case S_MAN:
			System.out.println("你选择的是男性");
			break;
		case S_WOMAN:
			System.out.println("你选择的是女性");
			break;
		default:
			System.out.println("您的输入有误~");
			break;
		}
	}
}

posted on 2021-11-16 19:31  SentralLiu  阅读(72)  评论(0)    收藏  举报