java 代理設計模式(shi)
首先代理(deleration)是什么,在日常生活中我們有很多這種的例子,比如你上個QQ,各種空間被什么代理刷屏,對的,代理不是生產產品的商家,也不是進購產品的賣家,他們只是幫別人賣東西,這就相當于一個第三方關系的存在,而在java里,也有這么一種東西。
在我們(men)(men)使用(yong)繼承的(de)(de)時候,可以感覺很方(fang)(fang)便,并且可以感受(shou)(shou)到java復(fu)用(yong)的(de)(de)精髓,而在享受(shou)(shou)這(zhe)種便利(li)的(de)(de)同時,我們(men)(men)還是(shi)將(jiang)基類的(de)(de)所有方(fang)(fang)法(fa)全部暴露了出(chu)來(lai),那么有沒有一種方(fang)(fang)法(fa)是(shi)可以不將(jiang)基類的(de)(de)方(fang)(fang)法(fa)暴露出(chu)來(lai),同時也實現繼承的(de)(de)作(zuo)用(yong)呢(ni),答(da)案是(shi)有的(de)(de),那就(jiu)是(shi)代(dai)理。關(guan)于什么是(shi)代(dai)理,下面我們(men)(men)來(lai)看一個例子大家就(jiu)明白了。
//創建一個People類
class People{
private String name;
private int age;
//為people類添加一個說話的方法
public void talk(){
System.out.println("talking");
}
//添加一個打掃的方法
public void clear(){
System.out.println("clear");
}
//這里為了方便我就不再去寫get set方法了
}
//接下來我們創建一個學生代理類
class StudentDeleration{
private String name;
private int age;
//new一個People出來
//注意這里聲明了private是聲明的引用,在其他任何類中都不能調用這個引用了,從而保證了良好的封裝性
private People people = new People();
//talk方法
public void talk(){
//調用talk方法
people.talk();
}
public void clear(){
//調用clear方法
people.clear();
}
}
這樣我(wo)們就做好了一個(ge)代理(li),那么(me)別人使用(yong)這個(ge)學生代理(li)類的(de)(de)時候,并不能知道底層的(de)(de)People類具體(ti)實(shi)現,保證了良好的(de)(de)封裝性,當然(ran),代理(li)就是(shi)這個(ge)作用(yong),你在朋友(you)圈也(ye)只看到他(ta)在代理(li)賣東西,卻不知道她的(de)(de)被代理(li)人是(shi)誰,其實(shi)你也(ye)不用(yong)知道,這也(ye)是(shi)封裝了:)
