public class app
{
public static void main(String[] args)
{
LifeCircle lc=new LifeCircle();
lc.setHumanBuilder(new ManBuilder());
lc.build(13);
System.out.println(lc.getResult().type);
lc.build(20);
System.out.println(lc.getResult().type);
lc.build(100);
System.out.println(lc.getResult().type);
}
}
abstract class Human
{
public int age;
public String type;
}
class Man extends Human{}
interface HumanBuilder
{
public void buildAge(int age);
public void buildType();
public Human getResult();
}
class LifeCircle
{
private HumanBuilder humanBuilder;
public void setHumanBuilder(HumanBuilder builder)
{this.humanBuilder=builder;}
public void build(int age)
{
this.humanBuilder.buildAge(age);
this.humanBuilder.buildType();
}
public Human getResult()
{return this.humanBuilder.getResult();}
}
class ManBuilder implements HumanBuilder
{
private Human human=new Man();
public void buildAge(int age){human.age=age;}
public void buildType()
{
if(human.age>0 && human.age<=15) human.type="children";
if(human.age>15 && human.age<=55) human.type="man";
if(human.age>55) human.type="grand man";
}
public Human getResult(){return this.human;}
}
четверг, 10 марта 2011 г.
Строитель
Шаблон позволяет уменьшить связь клиентского кода и логики создания сложного объекта при помощи цепочки интерфейсов: управляющий класс - практически не меняется, затем строитель описывающий методы и собственно сложный объект. Также позволяет задать порядок построения частей как в этом примере, что может быть очень важно, а пользователь объекта может об этом не знать. Так задать тип человека(ребенок, взрослый или старик) нельзя не зная возраста!
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий