🕵️
Введение в паттерны
  • Введение в паттерны
  • Паттерны
    • Оглавление
    • Порождающие паттерны
      • Фабричный метод
        • Реализации на С++
        • Реализации на Kotlin
        • Возможные реализации для решения конкретных задач на С++
      • Абстрактная фабрика
        • Реализации на С++
        • Реализации на Kotlin
        • Возможные реализации для решения конкретных задач на С++
      • Прототип
        • Реализации на С++
        • Реализации на Kotlin
        • Реализации на Java
        • Возможные реализации для решения конкретных задач на С++
      • Строитель
        • Реализации на С++
        • Реализации на Kotlin
      • Одиночка
        • Реализации на C++
        • Реализации на Kotlin
        • Возможные реализации для решения конкретных задач на С++
      • Пул объектов
        • Реализации на С++
    • Структурные паттерны
      • Адаптер
        • Реализации на С++
        • Реализации на Kotlin
        • Возможные реализации для решения конкретных задач
      • Декоратор
        • Реализации на С++
        • Реализации на Kotlin
      • Компоновщик
        • Реализации на С++
      • Мост
        • Реализации на С++
      • Заместитель
        • Реализации на С++
        • Реализации на Kotlin
      • Фасад
        • Реализации на С++
      • Приспособленец
        • Реализации на С++
    • Поведенческие паттерны
      • Стратегия
        • Реализации на С++
        • Реализации на Kotlin
      • Команда
        • Реализации на С++
        • Реализации на Kotlin
      • Цепочка обязанностей
        • Реализации на С++
        • Реализации на Kotlin
      • Подписчик-издатель
        • Реализации на С++
        • Реализации на Kotlin
      • Посетитель
        • Реализации на С++
        • Возможные реализации для решения конкретных задач
      • Посредник
        • Реализации на С++
        • Реализации на Kotlin
      • Шаблонный метод
        • Реализации на С++
      • Опекун
        • Реализации на С++
      • Итератор
        • Реализации на С++
        • Реализации на Kotlin
      • Свойство
        • Реализации на С++
        • Возможные реализации для решения конкретных задач
  • Введение в идиомы
  • Идиомы
    • Оглавление
    • RAII
    • Type erasure
      • Контейнеры с type erasure
    • CRTP
    • Статический полиморфизм
    • Shrink to fit
    • Proxy
    • Erase remove
    • Decltype (auto)
    • Copy and swap
    • Safe bool
    • Scope guard
    • Addressof
Powered by GitBook
On this page

Was this helpful?

  1. Паттерны
  2. Порождающие паттерны
  3. Прототип

Реализации на Java

Prototype

Общая реализация на языке Java

public class CandyJava implements Cloneable {
    private final String name;
    private final String taste;
    private final String manufacture;

    public CandyJava(String name, String taste, String manufacture) {
        this.name = name;
        this.taste = taste;
        this.manufacture = manufacture;
    }

    public String getName() {
        return name;
    }

    public String getTaste() {
        return taste;
    }

    public String getManufacture() {
        return manufacture;
    }

    @Override
    public CandyJava clone()  {
        try {
            return (CandyJava) super.clone();
        } catch (CloneNotSupportedException e) {
            return null;
        }

    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        CandyJava candyJava = (CandyJava) o;
        return Objects.equals(name, candyJava.name) && Objects.equals(taste, candyJava.taste) && Objects.equals(manufacture, candyJava.manufacture);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, taste, manufacture);
    }
}
fun main() {
    val myJavaCandy = CandyJava("Kitty","delicious", "Well known")
    val brothersJavaCandy = myJavaCandy.clone()

    println("Is java candies equals: ${myJavaCandy == brothersJavaCandy}")
    println("My java candy: ${System.identityHashCode(myJavaCandy)}")
    println("Brothers java candy: ${System.identityHashCode(brothersJavaCandy)}")
}
PreviousРеализации на KotlinNextВозможные реализации для решения конкретных задач на С++

Last updated 1 year ago

Was this helpful?