Ketika Java masuk lebih dalam ke tingkat tertentu, itu pasti akan menemukan konsep pola desain. Mode desain banyak digunakan dalam sistem berukuran sedang Java. Dalam sistem e-commerce, jadi saya ingin menganalisis penerapan pengamat dari contoh e-commerce.
Meskipun toko online beragam dalam bentuk dan setiap situs memiliki karakteristiknya sendiri, ia juga memiliki kesamaan umum. .
Secara khusus, jika produk di toko online berubah dalam hal nama dan harga, dan jika sistem dapat secara otomatis memberi tahu anggota, itu akan menjadi fitur utama dari toko online yang membedakan antara toko tradisional. Ini membutuhkan penambahan peran pengamat ke produk produk, sehingga ketika detail produk berubah, pengamat dapat secara otomatis mengamati perubahan ini dan melakukan memperbarui atau memberi tahu tindakan yang tepat waktu.
Java API juga memberi kami antarmuka pengamat di luar rak Java.util.observer. Kita hanya perlu menggunakannya secara langsung.
Kita harus memperluas java.util.observer untuk benar -benar menggunakannya:
1. Memberikan metode pengamat add/delete;
2. Memberikan metode pemberitahuan (tidak memuaskan) untuk semua pengamat.
Salinan kode adalah sebagai berikut:
// Kelas produk dapat langsung digunakan oleh JSP untuk memanggil kelas menggunakan UseBean.
Produk kelas publik memperluas {
nama string pribadi;
harga pelampung pribadi;
Public String getName () {return name;}
public void setName () {
this.name = name;
// atur titik perubahan setChanged ();
NotifyoBserver (nama);
}
public float getPrice () {return price;}
public void setPrice () {
this.price = harga;
// atur titik perubahan setChanged ();
NotifyoBserver (float baru (harga));
}
// Berikut ini dapat berupa perintah insert pembaruan database.
public void savetodb () {
.............
}
}
Kami memperhatikan bahwa dalam metode Setxxx di kelas produk, kami mengatur metode pemberitahuan. Ketika formulir JSP memanggil SETXXX, metode NoTisfyoBServer sebenarnya dipicu, yang akan memberi tahu pengamat yang sesuai bahwa tindakan harus diambil.
Berikut ini adalah kode -kode pengamat ini, apa sebenarnya yang mereka ambil:
Salinan kode adalah sebagai berikut:
// Observer NameOBServer terutama digunakan untuk mengamati nama produk (nama).
NameOBServer kelas publik mengimplementasikan pengamat {
name string pribadi = null;
Pembaruan public void (OBJ yang dapat diamati, objek arg) {
if (arg instance dari string) {
name = (string) arg;
// Nilai Perubahan Nama Produk ada di Name System.out.println ("NameObServer: Name Change ke"+Name);
}
}
}
// Observer PriceObserver terutama digunakan untuk mengamati harga produk.
Public Class PriceObServer mengimplementasikan pengamat {
Harga pelampung pribadi = 0;
Pembaruan public void (OBJ yang dapat diamati, objek arg) {
if (arg instanceof float) {
harga = (float) arg) .floatValue ();
System.out.println ("PriceObServer: Harga Perubahan ke"+Harga);
}
}
}
Dalam JSP, kita dapat secara resmi menjalankan program pengamat ini:
Salinan kode adalah sebagai berikut:
<JSP: UseBean ID = "Produk" SCOPE = "Sesi" />
<jsp: setProperty name = "Product" properti = "*" />
<JSP: UseBean ID = "NameObs" Scope = "Sesi" />
<jsp: setProperty name = "Product" properti = "*" />
<JSP: UseBean ID = "PriceObs" Scope = "Session" />
<jsp: setProperty name = "Product" properti = "*" />
<%
if (request.getParameter ("save")! = null)
{
Product.SavetodB ();
out.println ("Perubahan data produk disimpan! Dan pelanggan telah secara otomatis diberitahu");
}kalau tidak{
// Tambahkan ke Observer Product.addobserver (NameOBS);
Product.addobserver (PriceOBS);
%>
//request.getRequesturi () adalah nama program yang menghasilkan JSP ini, yang berarti menyebut diri Anda <bentuk action = "<%= request.getRequesturi ()%>" method = post>
<Input Tipe = Hidden Name = "Simpan" Value = "1">
Nama Produk: <Input Type = Teks Nama = "Nama">
Harga Produk: <Jenis Input = Nama Teks = "Harga">
<input type = Submit>
</form>
<%
}
%>
Saat mengeksekusi program JSP, antarmuka entri formulir akan muncul. dari JSP.
Karena konsep penugasan otomatis dari data javabeans digunakan di sini, program aktual secara otomatis mengeksekusi pernyataan SetName SetPrice. Anda akan menemukan informasi berikut di konsol server:
Salinan kode adalah sebagai berikut:
NameObserver: Name Change to ?????
PriceObServer: Perubahan Harga menjadi ??? (Harga produk yang dimasukkan dalam formulir JSP);
Ini menunjukkan bahwa pengamat sudah bertindak.
Pada saat yang sama, Anda akan mendapatkan informasi di browser tempat Anda menjalankan JSP:
1. Simpan perubahan data produk! Dan secara otomatis memberi tahu pelanggan
Karena artikel di atas menggunakan konsep JSP, itu menyiratkan banyak tindakan otomatis.
Salinan kode adalah sebagai berikut:
tes kelas publik {
public static void main (string args []) {
Produk Produk = Produk Baru ();
NameObServer NameObs = newoObserver ();
PriceObServer PriceObs = new PriceObserver ();
// Tambahkan ke Observer Product.addobserver (NameOBS);
Product.addobserver (PriceOBS);
Product.setname ("Orange is Red");
Product.SetPrice (9.22F);
}
}
Anda akan menemukan informasi berikut:
NameObserver: Name Change menjadi Orange Is Red
PriceBserver: Perubahan Harga menjadi 9.22
Ini menunjukkan bahwa pengamat sedang bertindak.