2.单例设计模式:
原理:
懒汉式:私有化构造,直接new对象,对外提供获取方法;
饿汉式:私有化构造,先定义对象,但是不初始化。在获取方法里面判断对象是否为空,为空再新建。
(饿汉式容易出现线程安全问题,获取方法上要加synchronize,一般不用饿汉式,两种方法的构造都要加static,因为要让外界直接调用)
3.工厂设计模式:
原理:抽取各个对象类的共性,建立一个抽象的父类,再用一个工厂对调用方法加工(工厂获取客户需求,内部调用对象并反馈)。
4.模板设计模式:
原理:做一个模板,用子类继承模板,并覆盖部分方法,以实现特殊功能。
5.适配器设计模式:
原理:先做一个接口,然后用一个适配器实现接口中所有的方法,但是方法的内容为空,当有需要用到这些方法的时候,再新建一个类继承适配器并覆盖需要用到的方法
6.反射:
原理: 反射就是把java中相应的成分(构造方法 成员 方法)映射成相应的类.
1. 构造方法 反射成 constructor类
①
获取单个用
get
Constructor
(
参数类型.参数名 如:原构造是 String a 在这里变为--->
String.class
)方法,获取多个用
get
Constructor
②
如果要获取私有的,用
getDeclared
Constructors
(),
getDeclared
Constructor
(参数类型.class,...) 如:原构造是 String a 在这里变为---> String.calss
私有需要暴力反射:
constructor.setAccessible(true);
例子: 演示
获取空参构造并实例。(里面是可以加参数的,下面的例子是空参的例子。)
Constructor
constructor
=
class1
.
getConstructor
();
Object
obj
=
constructor
.
newInstance
();实例化
2. 成员 反射成 field类
① 获取单个用getField(里面加需要获取的成员名,+加引号)方法,获取多个用getFields
②
如果要获取私有的,用
getDeclaredFields(),
getDeclaredField("成员名")
获取单个并实例化,用
1.
获取空参构造实例。
Constructor
constructor
=
class1
.
getConstructor
();
Object
obj
=
constructor
.
newInstance
();
2.通过set,给空参实例赋值成员属性。
field
.
set
(
obj
,
"上海"
);
System
.
out
.
println
(
obj
);
3. 方法 反射成 method类
同上:
getDeclaredMethod,
getDeclaredMethods,
getMethod,
getMethods