Corak Flyweight di Java ialah corak reka bentuk struktur yang bertujuan untuk mengurangkan penggunaan memori dan meningkatkan prestasi dengan berkongsi seberapa banyak objek yang mungkin.
Mod flyweight Java biasanya termasuk yang berikut 4 peranan
Flyweight Factory: Bertanggungjawab untuk mencipta dan mengurus objek flyweight.
Concrete Flyweight (Concrete Flyweight): melaksanakan antara muka flyweight dan menyimpan keadaan dalaman yang berkaitan dengan keadaan dikongsi.
Keadaan Tidak Dikongsi: Menyimpan keadaan objek flyweight yang tidak dikongsi.Berat terbang abstrak
public interface Product { String getName(); double getPrice(); int getStock(); }
Berat terbang khusus
public class ConcreteProduct implements Product{ private String name; private double price; private int stock; public ConcreteProduct(String name, double price, int stock) { this.name = name; this.price = price; this.stock = stock; } @Override public String getName() { return name; } @Override public double getPrice() { return price; } @Override public int getStock() { return stock; } }
public class ProductFactory { private static Map<String, Product> productMap = new HashMap<>(); public static Product getProduct(String name, double price, int stock) { String key = name + "_" + price; Product res = productMap.get(key); if (Objects.isNull(res)) { // 如果缓存池内不存在,就创建新对象放置到缓存池 res = new ConcreteProduct(name, price, stock); productMap.put(key, res); } return res; } }
Ujian
public class Demo { public static void main(String[] args) { Product p1 = ProductFactory.getProduct("iPhone 14 Plus", 8899, 1); Product p2 = ProductFactory.getProduct("iPhone 14 Plus", 8899, 1); System.out.println(p1 == p2); } }Dalam kod sampel di atas, mula-mula buat antara muka produk, yang mengandungi nama, harga, inventori dan atribut lain produk Kemudian buat kelas produk tertentu ConcreteProduct, laksanakan antara muka Produk, dan tentukan nama keadaan dalaman yang dikongsi, harga dan stok Seterusnya kami mencipta ProductFactory untuk Cipta dan uruskan objek produk yang dikongsi objek produk. Setiap kali pelanggan perlu membeli produk, kami mula-mula menyemak sama ada objek produk telah dicipta, kembalikan rujukan kepada objek yang sedia ada, buat objek baharu dan simpan ia dalam HashMap dan kembalikan rujukannya.
Dengan berkongsi objek, hanya satu salinan objek yang sama dalam sistem boleh wujud dalam ingatan, dengan itu mengurangkan overhed memori.
Meningkatkan skalabiliti sistem. Jika anda perlu menambah objek baharu, anda hanya perlu menciptanya di kilang tanpa mengubah suai kod asal.Atas ialah kandungan terperinci Cara menggunakan corak reka bentuk flyweight Java untuk mengoptimumkan penciptaan objek dan meningkatkan prestasi dan kecekapan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!