Java/Паттерны: различия между версиями

Содержимое удалено Содержимое добавлено
Строка 80:
 
[[Категория:Java|Паттерны]]
 
используется создания экземпляра
класса с конкретными свойствами
из-за того что свойств может быть много
и свойства объекта могут иметь сложную логику
лучше вынести все это в отдельный класс
<source lang="java">
/**
** @author javawiki@ya.ru Чтв 10 Июн 2010 23:36:49
**
**/
import java.util.*;
public class app
{
public static void main(String[] args)
{
PersonCreator pc=new PersonCreator();
Person p1=pc.createPerson("Вася",10);
Person p2=pc.createPerson("Петя",12);
System.out.printf("%s= %s %s \n",p1,p1.name,p1.age);
System.out.printf("%s= %s %s \n",p2,p2.name,p2.age);
}
}
 
public class Person
{
public String name="";
public int age=0;
}
//промежуточный класс для использования билдера(нужен например для создания нескольких перегруженных методов(например новорожденным не нужно указывать возраст))
 
public class PersonCreator
{
Builder builder=new Builder();
public Person createPerson(String name, int age)
{
builder.create();
builder.setName(name);
builder.setAge(age);
return builder.getPerson();
}
 
}
public class Builder
{
private Person person;
public Person create()
{
person=new Person();
return person;
}
public void setName(String name)
{
this.person.name=name;
}
public void setAge(int age)
{
this.person.age=age;
//если например возраст меньше 0 то нужно выдать исключение!
}
public Person getPerson()
{
return this.person;
}
}
</source>