Приветствую Вас ГостьСреда, 15.05.2024, 19:46

Программирование на Java, Android, Delphi


Блог

Главная » 2013 » Май » 27 » Шаблоны проектирования. Прототип
17:25
Шаблоны проектирования. Прототип
Шаблон проектирования "Прототип" (Prototype) относится к производящим шаблонам. Он позволяет создавать новые объекты посредством копирования существующих экземпляров. Данный шаблон позволяет упростить процесс создания объектов и скрыть детали при создании. Например, есть объект, который содержит множество атрибутов. Для создания его нам нужно вызвать конструктор и установить начальные значения полей. Это сложно для клиента - гораздо проще вызвать метод без параметров, который вернет новый объект-копию текущего. Еще паттерн "Прототип" позволяет скрывать от клиента тип объекта, который реально создаётся.



Диаграмма работы паттерна "Прототип"


Например есть объект, который содержит сведения об организации.
//задаем интерфейс копирования объекта
interface Copyable{
Firm Copy();
}

//класс реализующий паттерн "прототип" реализует интерфейс клонирования
class Firm implements Copyable {

//название организации
private String FirmName;
public String GetFirmName(){return FirmName;};
public void SetFirmName(String FirmName){this.FirmName = FirmName;};

//адрес организации
private String FirmAddress;
public String GetFirmAddress(){return FirmAddress;};
public void SetFirmAddress(String FirmAddress){this.FirmAddress = FirmAddress;};

//Разсчетный счет организации
private String FirmPaymentAccount;
public String GetFirmPaymentAccount(){return FirmPaymentAccount;};
public void SetFirmPaymentAccount(String FirmPaymentAccount){this.FirmPaymentAccount = FirmPaymentAccount;};

//конструктор по умолчанию
Firm(){
FirmName = "Не указан";
FirmAddress = "Не указан";
FirmPaymentAccount = "Не указан";
}

//конструктор копирования
Firm(String Name, String Address, String PaymentAccount){
this.FirmName = Name;
this.FirmAddress = Address;
this.FirmPaymentAccount = PaymentAccount;
}

@Override
public Firm Copy() {
return new Firm(this.FirmName, this.FirmAddress, this.FirmPaymentAccount);
}

@Override
public String toString(){return this.FirmName + " " + this.FirmAddress + " " + this.FirmPaymentAccount;}
}
Код клиента:
 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { 
Firm f1 = new Firm("ООО Рога и Копыта", "г. Рыбинск", "1111-222-333");
jTextArea1.append(f1.toString() + "\n");

//используем копирование
Firm f2 = f1.Copy();
jTextArea1.append(f2.toString() + "\n");

f2.SetFirmAddress("г. Ярославль");
jTextArea1.append(f2.toString() + "\n");
}
Категория: Java (Разработка программного обеспечения на Java) | Просмотров: 1454 | Добавил: alex | Теги: шаблон проектирования, Java, Прототип, Prototype, паттерн | Рейтинг: 5.0/1
Категории раздела
Java (Общие вопросы) [17]
Java (Библиотека, пакеты Java) [17]
Java (Разработка программного обеспечения на Java) [5]
Java (Среда разработки NetBeans) [5]
JSF + PrimeFaces [21]
Java EE [11]
Разное [3]
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Поиск
Календарь
«  Май 2013  »
ПнВтСрЧтПтСбВс
  12345
6789101112
13141516171819
20212223242526
2728293031
Архив записей