javaScript cara pabrik cara primitif
Karena properti suatu objek dapat didefinisikan secara dinamis setelah objek tersebut dibuat, kode yang serupa dengan berikut ini ditulis ketika JavaScript pertama kali diperkenalkan.
Copy kode kodenya sebagai berikut:
var oCar = Objek baru;
oCar.color = "biru";
oMobil.pintu = 4;
oMobil.mpg = 25;
oCar.showColor = fungsi() {
alert(ini.warna);
};
Pada kode di atas, objek mobil dibuat. Kemudian berikan beberapa atribut: Warnanya biru, memiliki empat pintu, dan kecepatannya mencapai 25 mil per galon. Atribut terakhir sebenarnya adalah pointer ke suatu fungsi, artinya atribut tersebut adalah sebuah metode. Setelah mengeksekusi kode ini, objek mobil dapat digunakan. Namun ada masalah di sini, yaitu Anda mungkin perlu membuat beberapa contoh mobil, yang jelas bukan cara yang baik.
Solusi: Metode pabrik
Untuk mengatasi masalah ini, pengembang membuat fungsi pabrik yang membuat dan mengembalikan objek dengan tipe tertentu. Misalnya, fungsi createCar() dapat digunakan untuk merangkum operasi pembuatan objek mobil yang terdaftar sebelumnya:
Copy kode kodenya sebagai berikut:
fungsi membuat Mobil(sColor,iDoors,iMpg) {
var oTempCar = Objek baru;
oTempCar.color = sWarna;
oTempCar.doors = iDoors;
oTempCar.mpg = iMpg;
oTempCar.showColor = fungsi() {
alert(ini.warna);
};
kembalikan oTempCar;
}
var oCar1 = buatMobil("merah",4,23);
var oCar2 = createCar("biru",3,25);
oCar1.showColor(); //Keluaran "merah"
oCar2.showColor(); //Keluaran "biru"
Memanggil fungsi pabrik ini akan membuat objek baru dan memberikan semua atribut yang diperlukan. Tambahkan parameter ke fungsi createCar() untuk menetapkan nilai pada atribut warna, pintu, dan mpg dari objek mobil yang akan dibuat. Hal ini membuat dua objek mempunyai properti yang sama, namun nilai propertinya berbeda. Hal buruk tentang metode ini adalah setiap kali objek mobil dibuat (yaitu, fungsi createCar dipanggil satu kali), metode showColor dibuat berulang kali untuk setiap objek. Ini sebenarnya tidak diperlukan untuk setiap objek fungsi. . Jadi kami mencoba mendeklarasikan atribut metodenya di luar fungsi.
Tentukan metode objek di luar fungsi pabrik
Beberapa pengembang menghindari masalah ini dengan mendefinisikan metode objek di luar fungsi pabrik dan kemudian menunjuk ke metode tersebut melalui properti:
Copy kode kodenya sebagai berikut:
fungsi tampilkanWarna() {
alert(ini.warna);
}
fungsi membuat Mobil(sColor,iDoors,iMpg) {
var oTempCar = Objek baru;
oTempCar.color = sWarna;
oTempCar.doors = iDoors;
oTempCar.mpg = iMpg;
oTempCar.showColor = showColor;
kembalikan oTempCar;
}
var oCar1 = buatMobil("merah",4,23);
var oCar2 = createCar("biru",3,25);
oCar1.showColor(); //Keluaran "merah"
oCar2.showColor(); //Keluaran "biru"
Dalam kode yang ditulis ulang di atas, fungsi showColor() didefinisikan sebelum fungsi createCar(). Di dalam createCar(), objek diberikan pointer ke fungsi showColor() yang ada. Secara fungsional, ini memecahkan masalah pembuatan objek fungsi berulang kali; tetapi secara semantik, fungsi tersebut tidak terlihat seperti metode objek.