📄 反射_设计模式.txt
字号:
一、代理模式?
代理查模式有三个角色,分别是通用接口、代理类、真实对象,
代理类与真实对象实都实现的通用接口,将真实对象作为代理类的
一个属性,向客户端公开的代理类,客户端调用代理类的方法,代理
调用真实对象方法,在调用真实对象的方法之前之后可以做一些服务。
五、什么是反射?
通过类说明可以得到这个类的父类、实现的所的接口、内部类、方法、
构造子、属性,可以通过构造子实例化对象、唤起方法、取属性值,
设置属性值。
六、得到类说明的三种方式?
类.class
对象.getClass();
Class.forName("");//可以动态的注册类得到类说明。
七、得到所有构造并实例化对象?
Class cus_cls=Class.forName("vo.Customer");
//得到所有的构造子
Constructor contrs[]=cus_cls.getConstructors();
//得到一个构造子
Constructor cons=cus_cls.getConstructor(new Class[]{String.class,String.class});
Object obj=cons.newInstance(new Object[]{"张三","1234"});
八、得到所的有方法并唤起方法?
//得到所有的方法
Method methods[]=cus_cls.getMethods();
//得到一个方法
Method setCustomerName=cus_cls.getMethod("setCustomerName",new Class[]{String.class});
Object customer=cus_cls.newInstance();//调用默认的构造子实例化得到一个对象
setCustomerName.invoke(customer,new Object[]{"张三"});
九、得到所有的属性,取属性值,设置属性值?
//得到所有的属性
Field fields[]=cus_cls.getFields();
//得到一个属性
Field customerName=cus_cls.getField("customerName");
customerName.set(customer,"张三");
customerName.get(customer);
十、模式的好处是什么?
提高代码的可扩展、可维护
十二、模式的原则?
开闭原则:增加开放(可以替换已有的类),修改关闭(但对已有类不做修改)。
十三、框架设计的原则?
上层依赖于下层,尽量减少下层对上层的依赖,层与层之间通过
接口调用。
十四、工厂模式
有三个角色抽象产品、具体产品、工厂,工厂产生具体产品返回
抽象产品。
如果没有用反射,当增加一个产品时,只需修改工厂,不用修改客户端
半符合开闭原则。
如果用了反射,当增加一个产品时,只需修改配置文件,不用修改客户端及
工厂,完全符合开闭原则。
十五、单例模式:整个jvm中只有一个实例,有三个特点如下:
1、私有的构造子
2、私有的静态属性类型是自己
3、公有的静态方法
1、懒汉式:在真正取时才实例化
private static LazySingleton me;
public static LazySingleton newInstance()
{
if(me==null)
{
me =new LazySigleton();
}
return me;
}
2、饿汉式:在加载类时直接实例化
private static HungarySingleton me=new HungarySingleton();
十六、模板模式:有一个抽象类定义了具体方法及抽象方法,
具体方法调用抽象方法,为抽象方法提供服务。
子类继承抽象类,实现抽象方法,向客户端公开的
子类,通过抽象类的具体方法调用子类实现的抽象方法,
子类共用父类具体方法提供的服务。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -