1. 程式人生 > >(JAVA基礎) 理解複用的程式設計思想!

(JAVA基礎) 理解複用的程式設計思想!

問題:
*1.昨天,有個才學JAVA one month 的朋友跟我說:”我還是覺得直接把程式碼寫在 Main方法裡簡單點,為什麼還要用方法呢?”

*2.”還有那個執行緒,用Runnable實現多一點還是Thread多一點?”

引用塊內容
由於本人學習時是沒有任何人交流的,所以後來走了不少彎路,特以此記錄!(部落格1)

探討:

一: 首先我們來談談“方法”,它無非就是把你寫在main方法的一塊程式碼 !用一個單獨的容器裝了起來,那他有什麼好處呢?

1.首先是==> 可複用 ! 你想一下,當你在多個地方要呼叫那塊程式碼的功能時,難道你要在每個地方都去把你那段寫在main裡的臭長程式碼copy過去嘛?還是直接調一行方法的程式碼簡單。

2.!第二點:可維護性~~,想想,當你在10個地方copy使用過那段臭長程式碼,然後老闆要你去改下這段程式碼的功能,難道你要翻十個地方去一個個改? 這樣會噁心死你的,這樣子不是一個優雅的程式設計師!

~~其他的像 可讀性,程式碼規範,這些我就不講了~…..

說了上面這些,就是為了讓我們更理解下面這個話題,也就我們前言的第2點!

二: 實現執行緒用Runnable還是繼承Thread :

這裡分兩種:
1. (當我們以!Runnable為操作物件!的時候)

這個時候用Runnable 就有我們上面所說的兩個好處==>!複用,可維護性!
!比如我可以將這個Runnable物件同時傳給10個執行緒,易維護。  

引用塊內容
(介面你可以暫理解為方法,但是他跟”方法”不一樣的是方法不能當物件,即當做一個引數傳給別人,但是介面可以當物件使用!)

*Runnable頻道!例:

    Thread thread1=new Thread(runnable);
    Thread thread2=new Thread(runnable);
    Thread thread3=new Thread(runnable);

    private static Runnable runnable=new Runnable() {
    @Override
    public void run() {

    }
};

 PS:注意這裡的可複用性不是你覺得很簡單的那種!"匿名"物件的寫法!,例:

   Thread thread=new Thread(new Runnable() {
        @Override
        public void run() {

        }
    });

  所有一定要像第一種Runnable寫法 宣告一個Runnable runnable 物件時==>
  才有我說的效果! 第二種直接在()裡傳new Runnable匿名寫法是一次性的。

*Thread頻道!

上面說了我們生成一個Runnable runnable物件的好處,那都是基於對Runnable方法做操作的時候!~~所以這個時候用第二實現執行緒的方式就不合適了,因為很噁心!你懂的! :

class MyThread1 extends Thread{
    @Override
   public void run() {

    *執行同樣的功能*
    }
 }
class MyThread2 extends Thread{
    @Override
   public void run() {

    *執行同樣的功能*
    }
 }             PS:…我改個run裡的功能要同時改10個Thread裡的Run方法55

2.* 但是為什麼又存在第二種寫法呢?

因為操作物件的不同:
~~~上面我們是針對Runnable物件去做討論,但是我們要複用Thread的時候呢? 如果我們是針對Thread做改變的話,用runnable實現的方式就很不合適了

例:比如有多個類中都開始了某個執行緒:

 class Test1{
 MyThread1  mythread=new MyThread1;
   //main方法中
  myThread1.start
  }

  class Test2{
 MyThread1  mythread=new MyThread1;
 MyThread2  mythread=new MyThread2;(這裡同時用多個執行緒也是一樣的,都很方便)
   //main方法中執行
  myThread1.start; 
  myThread2.start;
   }

所以我們要複用Thread的時候,再使用Runnable方式就很SB了!(運用前言的思維模型)

    //這裡是在一個class類中

    Thread thread3=new Thread(runnable);   
    (因為這個時候Thread就屬於一次性的,沒有複用性!)

    private static Runnable runnable=new Runnable() {
    @Override
    public void run() {

    }
};

==》還是那句話,因為*易維護性差!!
所以要提前預判,你是一次性的程式碼還是需要多次複用!)

> 總結:所以 沒有哪種方式好不好,而是要根據你的業務場景去選擇適合你優雅 的方式!

三:

1.最後就是()裡面的引數是用來幹嘛的,無非就是這個方法內部需要用到某些物件,然後可以如(String str) 直接讓別人傳進來,進而去操作這個引數物件, 總結就是 便於資料互動!

總結:所以引數是資料互動的很重要的一部分,在類class與另外一個class類的
資料互動中,它也經常會用到靠 構造“方法” 裡面的引數傳遞資料!

2.介面是用來幹嘛的?介面無非就是,在一個類class1裡面實現了一個動作(即實現了一個介面),然後能讓另外一個類class2 通過 impleptent(連線介面物件) 順利的捕捉到class1的動作, 然後在動作執行時立即在介面方法裡面做出對應的操作!

PS:在實際使用中一般都是不同的類之間監聽介面比較多,在同一個class中也是可以使用介面監聽的!

                                          作者:-風行雲K
                                      ----2018/07/27 11:46