Как называется этот шаблон? (многоразовый вес)

1

В течение многих лет я называл это мухой, но, глядя на хорошее описание мухи, я заметил, что все они сказали, что основной вариант использования - создать много легких объектов, в то время как моя мотивация - не создавать много объектов.

Шаблон касается использования одного объекта или небольшого количества объектов для последовательного обращения к различным частям более крупной структуры данных под видом определенного интерфейса. Например, вот класс для объекта, который дает мне объект 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()); }
}

Вы могли бы сказать, что это адаптер, но это особый вид адаптера, поскольку он относится к части большого хранилища без дублирования данных, а также к тому, что его можно изменить, чтобы ссылаться на другую часть, не создавая новый объект.

Любой вопрос о том, как я должен обращаться к этой схеме?

Теги:
design-patterns

1 ответ

0

Почувствуйте себя декоративным рисунком с рисунком мухи

Ещё вопросы

Сообщество Overcoder
Наверх
Меню