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

Содержимое удалено Содержимое добавлено
→‎Builder: Код отформатирован для улучшения читабельности.
Строка 92:
**/
import java.util.*;
 
public class app {
{
public static void main(String[] args) {
PersonCreator pc = new PersonCreator();
{
Person p1 = Person p2=pc.createPerson("ПетяВася",12 10);
PersonCreator pc=new PersonCreator();
Person p2 = Person p1=pc.createPerson("ВасяПетя",10 12);
System.out.printf("%s= %s %s \n",p2 p1,p2 p1.name,p2 p1.age);
Person p2=pc.createPerson("Петя",12);
System.out.printf("%s= %s %s \n",p1 p2,p1 p2.name,p1 p2.age);
}
System.out.printf("%s= %s %s \n",p2,p2.name,p2.age);
}
}
 
public class Person {
public void setName(String name) = "";
{
public Stringint age name="" 0;
public int age=0;
}
//промежуточный промежуточный класс для использования билдера (нужен, например, для создания нескольких перегруженных методов (например, новорожденным не нужно указывать возраст))
 
public class PersonCreator {
Builder builder = new Builder();
{
Builder builder=new Builder();
public Person createPerson(String name, int age)
{
builder.create();
builder.setName(name);
builder.setAge(age);
return builder.getPerson();
}
 
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 private Person create()person;
 
{
public Person getPersoncreate() {
person = person=new Person();
return person;
}
{}
public void setName(String name)
 
{
public void setAgesetName(intString agename) {
this.person.name = name;
}
{}
public void setAge(int age)
 
{
public void setAge(int age=0;) {
this.person.age = age;
// если, например, возраст меньше 0, то нужно выдать исключение!
}
}
public Person getPerson()
 
{
public Person getPerson() {
return this.person;
}
}
}
</source></big>