輕松控制Java享元形式。本站提示廣大學習愛好者:(輕松控制Java享元形式)文章只能為提供參考,不一定能成為您想要的結果。以下是輕松控制Java享元形式正文
界說:它應用同享物件,用來盡量削減內存應用量和分享資訊給盡量多的類似物件;它合適用於只是因反復而招致應用沒法使人接收的年夜量內存的年夜量物件。
特色:年夜年夜削減對象的創立,下降體系的內存,使效力進步。
企業級開辟及經常使用框架中的運用:數據庫的銜接池,String的常量緩存池
詳細代碼實例:
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
public class Demo {
public static void main(String[] args) {
for(int i = 0 ; i < 10 ; i++){
Circle circle = new Circle(getColor());
circle.setRadius(getRadius());
circle.setX(getZ());
circle.setY(getZ());
circle.draw();
}
}
public static String getColor(){
String[] colors = {"白色","橙色","黃色","青色","綠色"};
Random random = new Random();
int index = random.nextInt(4);
return colors[index];
}
public static double getRadius(){
Random random = new Random();
return random.nextDouble()*20;
}
public static int getZ(){
Random random = new Random();
return random.nextInt(100);
}
}
/**
* 籠統享元類
* 這裡以繪圖形舉例:好比畫圓,參加色彩固定,畫圓的方法都是一樣的,所分歧的就是圓形的地位和圓的半徑
*/
interface Shape{
public void draw();
}
/**
* 詳細享元類
* 這裡創立詳細的享元類,類中包括了可以同享的數據和弗成同享的數據
* 例如:可以同享的色彩和隱形的畫圓方法,弗成同享的半徑和坐標
*/
class Circle implements Shape{
private int x;
private int y;
private double radius;
private String color;
public Circle(String color) {
this.color = color;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
public double getRadius() {
return radius;
}
public void setRadius(double radius) {
this.radius = radius;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public void draw() {
System.out.println("畫了一個圓心坐標為:("+this.x+","+this.y+"),半徑為"+this.radius+","+this.color+"的圓");
}
}
/**
* 工場類:享元形式的詳細表現實際上是在這一塊獲得完成的,在這一塊我們可以清晰的懂得到同享了哪些屬性或許數據
* 在這裡假定圓的色彩是固定的,我們只能畫固定的幾種色彩的圓
* 在這裡例子中對應的同享數據就應當是對應的色彩屬性和隱形的弗成見的復原的方法,這個在後面交卸過,一切圓的
* 畫的方法是一樣的
*/
class CircleFactory{
private static Map<String, Circle> map = new HashMap<>();
public static Circle getCircle(String color){
Circle c = map.get(color);
if(c == null){
c = new Circle(color);
map.put(color, c);
return c;
}
return c;
}
}
享元形式重要為懂得決年夜量相似對象占用年夜量內存的景象,由於內存是名貴的資本,所以我們講這些類似對象停止歸類,提掏出雷同部門用以同享,如許可以異常顯著的節儉內存開支,但要記住一個條件,在節儉內存的同時,我們是加年夜了代碼運轉時光為條件的,所以,有的時刻我們須要均衡時光和內存開支。
以上就是本文的全體內容,願望對年夜家的進修有所贊助,也願望年夜家多多支撐。