Rumah > Soal Jawab > teks badan
放假无聊在家看设计模式《head first系列》,今天看了工厂模式,分为三种:
简单工厂模式
工厂模式
抽象工厂模式
首先这3个奇葩的名字,我真是醉了,虽说干了很多年,但是真还没怎么用过,这些东西都是各类框架实现的技术,比如spring,jdbc以及log4j之类的,真实的业务场景我还真没咋用过,谁帮忙普及下。
别整网上那些没营养的例子,什么汽车啊,鸭子啊,披萨啊,真是无聊,难道都不是用数据库表存各种属性吗?非要建立出那么多类,可能是想帮助人理解吧,但实际业务场景压根没有啊,谁说出来我服谁?求喷!
我后续还有若干求喷文,希望大家踊跃的喷我~
迷茫2017-04-17 17:37:54
Adalah difahami bahawa anda mengatakan ini tidak digunakan dalam perniagaan Selain itu, jangan fikir hanya mereka yang nama kelasnya Kilang adalah kilang, seperti objek UUID, pada masa ini terdapat 4 versi UUID oleh baru. Mereka dibuat instantiated melalui Kilang Menghasilkan pelbagai versi UUID Alasan untuk reka bentuk ini biasanya untuk menyelesaikan masalah mencipta sebilangan besar kelas antara muka yang sama, ia adalah mudah untuk pengurusan bersatu kepada pengekodan set aksara
大家讲道理2017-04-17 17:37:54
Adalah satu tragedi jika anda masih belum menemuinya selepas bekerja selama bertahun-tahun Pertama sekali, anda boleh mempertimbangkan untuk menukar pekerjaan kepada syarikat besar dan anda akan menghadapinya.
Mod kilang yang paling mudah ialah penukaran pangkalan data hubungan/bukan hubungan, penukaran versi dan penukaran perpustakaan kelas. Tunggu, sebab anda tidak menemuinya adalah kerana tidak ada keperluan untuk pasca penyelenggaraan atau tidak perlu mempertimbangkan lelaran versi dan kemas kini pangkalan data, bukan?
Corak reka bentuk lain juga mempunyai fungsi tersendiri Jika anda tidak menemui perkara ini, ia tidak akan penting jika anda menghadapinya, anda akan merasakan bahawa perkara ini sangat mudah digunakan. warisan, dan polimorfisme dengan sangat bijak.
Selain itu, kemajuan pengaturcara adalah untuk mengkaji kod sumber rangka kerja, kod sumber bahasa, konkurensi besar dan kebolehselenggaraan kod.
高洛峰2017-04-17 17:37:54
Mari kita ambil contoh dari kelas jdk The Executors mempunyai kaedah statik newFixedThreadPool Antara muka ditakrifkan seperti berikut:
public static ExecutorService newFixedThreadPool(int nThreads, ThreadFactory threadFactory) {
Seperti yang anda lihat, parameter kedua boleh dihantar dalam kilang benang, dan kemudian kelas Pelaksana boleh mencipta benang yang diperlukan oleh kumpulan benang berdasarkan kaedah kilang. Dengan kata lain, anda boleh menulis semua peraturan untuk mencipta benang dalam ThreadFactory. Contohnya, biarkan nama benang yang dicipta oleh kilang mempunyai awalan XXX, atau tentukan keutamaan utas, dsb.
Ini boleh dikatakan sebagai senario yang paling biasa bagi corak kilang, dan ia digunakan secara meluas dalam pelbagai rangka kerja. Pelajari corak reka bentuk dan baca lebih banyak kod sebenar semasa membaca buku, dan anda secara semula jadi akan menemui fungsi khusus corak dan juga pelbagai teknik pintar.
黄舟2017-04-17 17:37:54
Sama ada corak kilang atau corak ciptaan lain, semuanya mempunyai satu tujuan - untuk memulakan objek. Dalam erti kata lain, untuk membina model struktur data (kelas dan objek itu sendiri adalah struktur data tersuai).
Jadi, persoalannya, mengapa kita boleh mencipta objek dengan cara ini dan menggunakan corak reka bentuk? Pada asasnya, sebabnya ialah kami tidak mahu pengguna peringkat atas menggunakan baharu secara langsung untuk memulakan objek. new
mengasingkan proses penciptaan objek daripada pengguna peringkat atasan atau proses penciptaan objek adalah rumit dan sukar untuk dikuasai oleh pengguna ; Atau penciptaan objek mesti memenuhi syarat tertentu Sama ada syarat ini adalah keperluan perniagaan atau kekangan sistem, tidak perlu membiarkan pengguna peringkat atasan menguasainya dan meningkatkan kesukaran pembangunan oleh orang lain.
Jadi, sekarang kita harus jelas, sama ada mod kilang atau prinsip pembukaan dan penutup yang disebutkan oleh rakan-rakan di atas, ia adalah untuk mengasingkan beberapa proses yang kompleks supaya proses yang kompleks ini tidak terdedah kepada dunia luar. Jika mereka terdedah Proses ini akan menambah masalah kepada pengguna, yang dipanggil kerja berpasukan.Ekapsulasi berorientasikan objek itu sendiri adalah untuk menjadikan
luaran semudah mungkin. API
, tetapi atas sebab perniagaan tertentu, medan ini perlu menggunakan integer untuk mewakili status. Nah, jika bilangan lebih sedikit, lebih mudah dikendalikan Jika terdapat lebih banyak nombor, pengguna peringkat atas mungkin tidak dapat mengingati dengan jelas status yang diwakili oleh setiap nombor (contohnya, jika anda ingin membuat sistem komunikasi suara. maka peralatan suara mempunyai banyak nombor status) . Pada masa ini, jika anda menggunakan Status
untuk mencipta objek dan kemudian memberikan nilai kepada new
, anda pasti perlu merujuk dokumentasi pembangunan, atau anda mungkin memberikan nilai yang salah secara tidak sengaja. Pada masa ini, anda mungkin ingin menggunakan corak kilang atau corak reka bentuk lain yang sesuai untuk membina kod. Status
public static class Factory
{
public static Ixxxxxx CreateWithOpen()
{
var obj = new Obj();
obj.Status = 1;
return obj;
}
public static Ixxxxxx CreateWithClose()
{
var obj = new Obj();
obj.Status = 2;
return obj;
}
}
Sudah tentu, anda juga boleh menggunakan penghitungan secara terang-terangan, ia bergantung pada kehendak pereka. Jadi, corak reka bentuk tidak menyatakan dalam senario mana ia mesti digunakan untuk lebih tepat, sepatutnya, apabila anda menggunakan corak reka bentuk, adakah ia boleh membawa kemudahan kepada ahli pasukan anda, atau meningkatkan kualiti kod dan. mengelakkan beberapa kesilapan? Jika ya, gunakannya Jika ia hanya membawa kerumitan dan tiada faedah, maka lupakan.
Dalam satu perkataan, tidak perlu menggunakannya atau tidak, dan tidak perlu menggunakannya Penggunaan akan membawa manfaat, sama ada kepada pasukan, kualiti produk atau kebolehselenggaraan produk. Gunakan atau tidak, ia mestilah kerja berpasukan dan berorientasikan produk Ini adalah keperluan asas untuk pereka perisian.