gpt4 book ai didi

java - 这个图案的名字是什么? (重复使用蝇量级)

转载 作者:太空宇宙 更新时间:2023-11-04 15:02:43 24 4
gpt4 key购买 nike

多年来,我将其称为flyweight,但在寻找flyweight的良好描述时,我注意到他们都说基本用例是创建大量轻量级对象,而我的动机是避免创建大量对象。

该模式是关于使用一个对象或少量对象在特定接口(interface)的幌子下顺序引用较大数据结构的不同部分。例如,下面是一个对象类,它为我提供了一个 Number 对象,该对象引用字节数组的各个部分(一次一个部分)来获取其实际数据:

public final class LittleEndRef extends Number {
private byte[] a;
private int off;

// This is the point: the fields are not finals, set in a constructor, which would require
// creating a new object every time I want to address some postion of an array. I reuse the
// same object to refer to different positions. (My motivation is to ensure that there is no
// overhead from garbage collection, ever.)
void setRef(byte[] a, int off) { this.a = a; this.off = off; }

public byte byteValue() { return a[off]; }
public short shortValue() { return (short)(a[off] | a[off+1]<<8); }
public int intValue() { return a[off] | a[off+1]<<8 | a[off+2]<<16 | a[off+3]<<24; }
public long longValue() { return a[off] | a[off+1]<<8 | a[off+2]<<16 | a[off+3]<<24 |
(long)(a[off+4] | a[off+5]<<8 | a[off+6]<<16 | a[off+7]<<24)<<32; }

public float floatValue() { return Float.intBitsToFloat(intValue()); }
public double doubleValue() { return Double.longBitsToDouble(longValue()); }
}

您可以说这是一个适配器,但它是一种特殊类型的适配器,因为它引用较大存储的一部分而无需复制数据,并且可以将其更改为引用不同的部分,而无需创建新对象。

我应该如何引用该模式有什么看法吗?

最佳答案

感觉像带有享元图案的装饰图案

关于java - 这个图案的名字是什么? (重复使用蝇量级),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22377485/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com