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)
Комментариев нет:
Отправить комментарий