Rumah > hujung hadapan web > tutorial js > Reka Bentuk Peringkat Rendah Aplikasi Pemain Muzik

Reka Bentuk Peringkat Rendah Aplikasi Pemain Muzik

Patricia Arquette
Lepaskan: 2025-01-01 07:55:10
asal
696 orang telah melayarinya

Low-Level Design of a Music Player Application

Mereka bentuk aplikasi pemain muzik memerlukan perancangan dan penstrukturan komponen yang teliti untuk memastikan pengalaman pengguna yang lancar dan cekap.


Keperluan Utama Pemain Muzik

  1. Fungsi Main Balik:

    • Main, jeda, hentikan dan sambung semula lagu.
    • Keupayaan untuk memainkan lagu dalam format yang berbeza (cth., MP3, WAV, AAC).
  2. Pengurusan Senarai Main:

    • Buat, kemas kini dan padam senarai main.
    • Tambah dan alih keluar lagu daripada senarai main.
  3. Cari:

    • Cari lagu mengikut tajuk, artis atau album.
  4. Kawalan Media:

    • Kocok dan ulang mod.
    • Laraskan kelantangan.
  5. Storan:

    • Simpan metadata tentang lagu (cth., tajuk, artis, album, tempoh).
    • Baca daripada storan tempatan atau sepadukan dengan perkhidmatan muzik dalam talian.

Gambaran Keseluruhan Reka Bentuk Sistem

Aplikasi pemain muzik boleh dipecahkan kepada komponen berikut:

  1. Lagu: Mewakili trek muzik tunggal.
  2. Senarai main: Mengurus koleksi lagu.
  3. MusicPlayer: Fungsi teras untuk main balik dan kawalan media.
  4. Perkhidmatan Carian: Mendayakan carian lagu mengikut metadata.
  5. StorageService: Mengendalikan pengambilan lagu daripada storan.

Mari kita lihat reka bentuk peringkat rendah dan pelaksanaan setiap komponen.


1. Kelas Lagu

Kelas Lagu mewakili satu runut muzik dengan metadatanya.

public class Song {
    private String id;
    private String title;
    private String artist;
    private String album;
    private double duration; // in seconds

    public Song(String id, String title, String artist, String album, double duration) {
        this.id = id;
        this.title = title;
        this.artist = artist;
        this.album = album;
        this.duration = duration;
    }

    // Getters and setters
    public String getId() {
        return id;
    }

    public String getTitle() {
        return title;
    }

    public String getArtist() {
        return artist;
    }

    public String getAlbum() {
        return album;
    }

    public double getDuration() {
        return duration;
    }
}
Salin selepas log masuk
Salin selepas log masuk

2. Kelas Senarai Main

Kelas Senarai Main menguruskan koleksi lagu. Ia membenarkan menambah, mengalih keluar dan mengambil lagu.

import java.util.ArrayList;
import java.util.List;

public class Playlist {
    private String name;
    private List<Song> songs;

    public Playlist(String name) {
        this.name = name;
        this.songs = new ArrayList<>();
    }

    public void addSong(Song song) {
        songs.add(song);
    }

    public void removeSong(Song song) {
        songs.remove(song);
    }

    public List<Song> getSongs() {
        return songs;
    }

    public String getName() {
        return name;
    }
}
Salin selepas log masuk
Salin selepas log masuk

3. Kelas MusicPlayer

Kelas MusicPlayer mengendalikan fungsi main balik seperti main, jeda, berhenti dan kawalan kelantangan.

public class MusicPlayer {
    private Song currentSong;
    private boolean isPlaying;

    public void play(Song song) {
        this.currentSong = song;
        this.isPlaying = true;
        System.out.println("Playing: " + song.getTitle() + " by " + song.getArtist());
    }

    public void pause() {
        if (isPlaying) {
            isPlaying = false;
            System.out.println("Paused: " + currentSong.getTitle());
        } else {
            System.out.println("No song is currently playing.");
        }
    }

    public void stop() {
        if (currentSong != null) {
            System.out.println("Stopped: " + currentSong.getTitle());
            currentSong = null;
            isPlaying = false;
        } else {
            System.out.println("No song is currently playing.");
        }
    }

    public void resume() {
        if (currentSong != null && !isPlaying) {
            isPlaying = true;
            System.out.println("Resumed: " + currentSong.getTitle());
        } else {
            System.out.println("No song to resume.");
        }
    }
}
Salin selepas log masuk

4. Kelas Perkhidmatan Carian

Kelas SearchService membolehkan pengguna mencari lagu mengikut tajuk, artis atau album.

import java.util.ArrayList;
import java.util.List;

public class SearchService {
    private List<Song> songs;

    public SearchService(List<Song> songs) {
        this.songs = songs;
    }

    public List<Song> searchByTitle(String title) {
        List<Song> results = new ArrayList<>();
        for (Song song : songs) {
            if (song.getTitle().equalsIgnoreCase(title)) {
                results.add(song);
            }
        }
        return results;
    }

    public List<Song> searchByArtist(String artist) {
        List<Song> results = new ArrayList<>();
        for (Song song : songs) {
            if (song.getArtist().equalsIgnoreCase(artist)) {
                results.add(song);
            }
        }
        return results;
    }

    public List<Song> searchByAlbum(String album) {
        List<Song> results = new ArrayList<>();
        for (Song song : songs) {
            if (song.getAlbum().equalsIgnoreCase(album)) {
                results.add(song);
            }
        }
        return results;
    }
}
Salin selepas log masuk

5. Kelas Perkhidmatan Storan

Kelas StorageService mensimulasikan membaca lagu daripada storan tempatan.

public class Song {
    private String id;
    private String title;
    private String artist;
    private String album;
    private double duration; // in seconds

    public Song(String id, String title, String artist, String album, double duration) {
        this.id = id;
        this.title = title;
        this.artist = artist;
        this.album = album;
        this.duration = duration;
    }

    // Getters and setters
    public String getId() {
        return id;
    }

    public String getTitle() {
        return title;
    }

    public String getArtist() {
        return artist;
    }

    public String getAlbum() {
        return album;
    }

    public double getDuration() {
        return duration;
    }
}
Salin selepas log masuk
Salin selepas log masuk

Contoh Penggunaan

import java.util.ArrayList;
import java.util.List;

public class Playlist {
    private String name;
    private List<Song> songs;

    public Playlist(String name) {
        this.name = name;
        this.songs = new ArrayList<>();
    }

    public void addSong(Song song) {
        songs.add(song);
    }

    public void removeSong(Song song) {
        songs.remove(song);
    }

    public List<Song> getSongs() {
        return songs;
    }

    public String getName() {
        return name;
    }
}
Salin selepas log masuk
Salin selepas log masuk

Pengambilan Utama

  • Modulariti: Setiap komponen mempunyai tanggungjawab tertentu, menjadikan sistem mudah diselenggara dan dilanjutkan.
  • Skalabiliti: Reka bentuk boleh menyepadukan ciri baharu dengan mudah seperti penstriman daripada perpustakaan muzik dalam talian.
  • Pengalaman Pengguna: Menyokong fungsi penting seperti senarai main, carian dan main balik.

Atas ialah kandungan terperinci Reka Bentuk Peringkat Rendah Aplikasi Pemain Muzik. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan