1. 程式人生 > 其它 >Node-RED中實現選擇照片並轉碼Base64並顯示

Node-RED中實現選擇照片並轉碼Base64並顯示

(1)案例背景:

在作業系統中,一個資料夾中可能存放著影象檔案,視訊檔案,文字檔案,也可能存放其他的資料夾,而對不同型別的檔案進行的瀏覽操作也不一樣,使用透明組合模式,繪製類圖並程式設計實現檔案的瀏覽(課本197頁第二題)。

 

(2)實現步驟:

  • 根據題意,畫出組合模式的類圖,類圖中應包含抽象檔案類AbstractFile,具體的影象檔案類ImageFile,視訊檔案類VideoFile,文字檔案類TextFile以及資料夾類Folder,對每個檔案都有display()方法,而對資料夾可以進行add()方法和remove()方法。
  • 根據類圖,實現上述類的具體程式碼以及使用者類Client,在使用者類中需要將不同型別的檔案放入資料夾中。
  • 編譯並執行程式,使程式能夠輸出對檔案的瀏覽過程。

(3)案例總結:

 

 

在以下情況可以使用組合模式:

  • 在具有整體和部分的層次結構中,希望通過一種方式忽略整體與部分的差異,使客戶端可以一致的對待他們
  • 在使用面嚮物件語言開發的系統中需要處理一個樹形結構
  • 在一個系統中能夠分離出葉子物件和容器物件,而且他們的型別不固定,需要增加一些新的型別

 

 

程式碼結構:

 

 

 

 

詳細程式碼:

AbstractFile.java:

package File.AbstractFile;



public abstract class AbstractFile {

    public abstract
void display(); }

 

 

 

 

 

ImageFile.java:

package File.ConcreteFlie;



import File.AbstractFile.AbstractFile;



public class ImageFile extends AbstractFile {

    public void display(){

        System.out.println("瀏覽圖片檔案。");

    }

}

 

 

 


 

 

TextFile.java:

package File.ConcreteFlie;



import File.AbstractFile.AbstractFile; public class TextFile extends AbstractFile { public void display(){ System.out.println("瀏覽文字檔案。"); } }

 


 

 

 

 

VideoFile.java:

package File.ConcreteFlie;



import File.AbstractFile.AbstractFile;



public class VideoFile extends AbstractFile {

    public void display(){

        System.out.println("瀏覽視訊檔案。");

    }

}

 

 


 

 

 

 

Folder.java:

package File.ConcreteFlie;



import File.AbstractFile.AbstractFile;



import java.util.ArrayList;



public class Folder extends AbstractFile {

    private ArrayList arrayList = new ArrayList();



    public void  add(AbstractFile abstractFile){

        arrayList.add(abstractFile);

    }



    public void remove(AbstractFile abstractFile){

        arrayList.remove(abstractFile);

    }



    public void display(){

        for (Object object:arrayList){

            ((AbstractFile) object).display();



        }

    }





}

 

 

 


 

 

Client.java:

package File.Client;



import File.AbstractFile.AbstractFile;

import File.ConcreteFlie.Folder;

import File.ConcreteFlie.ImageFile;

import File.ConcreteFlie.TextFile;

import File.ConcreteFlie.VideoFile;



public class Client {

    public static void main(String[] args) {

System.out.println("詳細設計實驗報告  1904班白旭君  2019005368");



        AbstractFile obj1,obj2,obj3,obj4,obj5,obj6;

        Folder f1,f2,f3;



        obj1 = new ImageFile();

        obj2 = new TextFile();

        obj3 = new VideoFile();

        f1 = new Folder();

        f1.add(obj1);

        f1.add(obj2);

        f1.add(obj3);



        obj4 = new ImageFile();

        obj5 = new ImageFile();

        f2 = new Folder();

        f2.add(obj4);

        f2.add(obj5);



        obj6 = new VideoFile();

        f3 = new Folder();

        f3.add(f1);

        f3.add(f2);

        f3.add(obj6);



        f3.display();



    }

}

 

 


 

 

實驗結果: