第十四講 適配器模式、內部類、遞歸算法、數據結構之鏈表、包裝類、Eclipse開發環境設置

導讀

適配器模式,也是Java二十三中設計模式之一。讓其他的對象可以適應規範,其實這樣說是不是覺得很迷糊啊?

我們把適配器模式當做我們家電用的插座,對,就是這樣來想就很容易學習和應用了。

內部類:日常開發中用的很少,但它卻很重要。


遞歸算法:方法調用自身的操作,但必須要有一個出口,因爲避免進入死循環。


鏈表:擁有一個pre節點和next節點,element是代表即將存儲或者刪除的對象。

包裝類:就是JDK7.0以上的版本,提供對原生數據的對象化包裝。


Eclipse工具的常用設置。對於一般地開發人員,是必須要設置的,因爲可以提高開發效率和團隊規範化!


一、適配器模式設計代碼

public interface Target {
    /**
     * 這是源類Adaptee也有的方法
     */
    public void sampleOperation1(); 
    /**
     * 這是源類Adapteee沒有的方法
     */
    public void sampleOperation2(); 
}
    

public class Adaptee {
    
    public void sampleOperation1(){}
}


public class Adapter extends Adaptee implements Target {
    /**
     
    * 由於源類Adaptee沒有方法sampleOperation2()
     
    * 因此適配器補充上這個方法
     
    */
   

@Override
    public void sampleOperation2() {
        //寫相關的代碼
    }
}

概念:內部類是指在一個外部類的內部再定義一個類。類名不需要和文件夾相同。
定義:內部類可以是靜態static的,也可用public,default,protected和private修飾。
(而外部頂級類即類名和文件名相同的只能使用public和default)。

注意:內部類是一個編譯時的概念,一旦編譯成功,就會成爲完全不同的兩類。
對於一個名爲outer的外部類和其內部定義的名爲inner的內部類。
編譯完成後出現outer.class和outer$inner.class兩類。
所以內部類的成員變量/方法名可以和外部類的相同。
1. 成員內部類
|- 員內部類,就是作爲外部類的成員,可以直接使用外部類的所有成員和方法,即使是private的。
|- 同時外部類要訪問內部類的所有成員變量/方法,則需要通過內部類的對象來獲取。

public class Outer { 
    public static void main(String[] args) { 
        Outer outer = new Outer(); 
        Outer.Inner inner = outer.new Inner(); 
        inner.print("Outer.new"); 
        inner = outer.getInner(); 
        inner.print("Outer.get"); 
    } 
 
    // 個人推薦使用getxxx()來獲取成員內部類,尤其是該內部類的構造函數無參數時 
    public Inner getInner() { 
        return new Inner(); 

 
    public class Inner { 
        public void print(String str) { 
            System.out.println(str); 
       

    } 

2. 局部內部類:局部內部類,是指內部類定義在方法和作用域內。
代碼參考如下:
public class Parcel4 { 
    public Destination destination(String s) { 
        class PDestination implements Destination { 
            private String label; 
            private PDestination(String whereTo) { 
                label = whereTo; 
      } 
 
            public String readLabel() { 
                return label; 
            } 
        } 
        return new PDestination(s); 
    } 
 
    public static void main(String[] args) { 
        Parcel4 p = new Parcel4(); 
        Destination d = p.destination("Tasmania"); 
    } 
(一次性用得比較多,記住就好!)
匿名內部類:實現一個接口或者抽象類——
((Button) findViewById(R.id.start)).setOnClickListener(new Button.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
      new Thread() { 
            @Override 
            public void run() { 
                // TODO Auto-generated method stub 
            } 
        }.start(); 
    } 
}); 


遞歸算法——
代碼如下:
public class Fibonacci {  
    /** 
     * time:2012.12.2 
     * author:王金宇 
     * description:用遞歸實現斐波那契數列,但是此方法是嫉妒危險的,適用於求解比較小的位置數值 
     */  
    public static void main(String[] args) {  
        Fibonacci fibonacci=new Fibonacci();  
        int result=fibonacci.fib(5);  
               System.out.println(result);  
    }  
  
    public int fib(int index){  
        if(index==1||index==2){  
            return 1;  
        }else{  
            return fib(index-1)+fib(index-2);  
        }  
    }  
}  

執行結果示意圖——




Java包裝類技術——

int是原生類型,與之對應的是Integer類。

對,一個是數值,一個是對象,顯然是不同的兩種數據類型。

怎麼判斷呢?其實更簡單,對象有屬性和方法,而原生的沒有,因爲原生就本身的意思。直接拿來用就ok了,測試一下就知道了。

代碼如下:

int num = 100;

Integer integer = new Integer(num);

這樣做的目的,除了可以互相轉換之外,還可以增強面向對象對原生數據類型更加優秀的編程方式——

Java中有8種基本數據類型,與之對應的就有八種包裝類,一般地說,包裝類更方便用於集合或者框架技術配置。

關於如何設置Eclipse開發環境,我這裏有一篇博客值得一看。

我們都是學習技術的,分享是我們最大的樂趣,別人怎麼想我不曉得,反正寧叔覺得都是中國的IT技術人員;

我們必須要努力,突破技術點,比國外的技術員都要厲害。哈哈~


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章