?? 反射_設計模式.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 + -