Небольшой разговор о шаблонах проектирования (10) — Шаблон прототипа

Введение в столбец

Адрес столбца

связь

Введение в столбец

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

Шаблон прототипа

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

Вставьте сюда описание изображения

Классификация ролей

Абстрактный прототип (Прототип)

Интерфейс, определяющий метод клонирования. Обычно это интерфейс или абстрактный класс. Этот интерфейс объявляет метод клонирования для копирования объекта-прототипа.

Бетонный прототип

Реализован интерфейс абстрактного прототипа и предоставлена ​​конкретная реализация метода клонирования. Конкретный объект-прототип создает новый объект с помощью метода клонирования, копируя при этом свойства и методы объекта-прототипа.

Клиент

Создайте новый объект, вызвав метод clone. Клиент может скопировать объект-прототип с помощью метода clone, а затем изменить свойства клонированного объекта по мере необходимости.

Менеджер прототипов

Используется для управления процессом создания и клонирования объектов-прототипов. Менеджер прототипов может вести реестр объектов-прототипов, и клиент получает клон объекта-прототипа через менеджер прототипов.

Основная идея

Метод клонирования объекта-прототипа может копировать свойства и методы объекта-прототипа для создания нового объекта. Клиент может по мере необходимости создавать новые объекты с помощью метода клонирования и свободно изменять свойства клонированного объекта. Шаблон прототипа может эффективно повысить эффективность создания объектов и сделать процесс создания объектов более гибким и масштабируемым.
Вставьте сюда описание изображения

Реализация Java-кода

// 原型接口
interface Prototype {
    
    
    Prototype clone();
}

// 具体原型类
class ConcretePrototype implements Prototype {
    
    
    private String name;

    public ConcretePrototype(String name) {
    
    
        this.name = name;
    }

    public Prototype clone() {
    
    
        return new ConcretePrototype(this.name);
    }

    public void setName(String name) {
    
    
        this.name = name;
    }

    public String getName() {
    
    
        return this.name;
    }
}

// 客户端代码
public class Client {
    
    
    public static void main(String[] args) {
    
    
        // 创建原型对象
        Prototype prototype = new ConcretePrototype("原型对象");

        // 克隆原型对象
        Prototype clone = prototype.clone();

        // 修改克隆对象的属性
        ((ConcretePrototype) clone).setName("克隆对象");

        // 输出原型对象和克隆对象的属性
        System.out.println("原型对象的属性:" + prototype.getName());
        System.out.println("克隆对象的属性:" + ((ConcretePrototype) clone).getName());
    }
}

анализ кода

В приведенном выше примере мы определяем прототип интерфейса Prototype, который содержит метод clone для клонирования объекта-прототипа. Затем мы создали конкретный прототип класса ConcretePrototype, реализовали интерфейс Prototype и вернули новый объект клонирования в методе clone.

В клиентском коде мы создаем прототип объекта-прототипа, а затем клонируем новый клон объекта с помощью метода clone. Затем мы изменили свойства объекта-клона и вывели свойства объекта-прототипа и объекта-клона.
Вставьте сюда описание изображения

Анализ преимуществ и недостатков

преимущество

Упрощение создания объектов

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

Скрыть детали создания объекта

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

Поддерживает динамическое добавление и изменение свойств объекта.

Объекты-клоны можно изменять независимо от объекта-прототипа, не затрагивая объект-прототип, что делает создание объекта более гибким и масштабируемым.

Предоставляет альтернативный способ создания объектов.

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

недостаток

Реализация метода клонирования может быть сложной.

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

Отношения между клонированными объектами и объектами-прототипами могут быть сложными.

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

Объекты-клоны создаются ограниченным образом.

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

Guess you like

Origin blog.csdn.net/weixin_74888502/article/details/133466554
10