рдореБрдЭреЗ рджреЛ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдпрд╣ рд▓реЗрдЦ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдореИрдВ рдПрдмреНрд╕рдЯреНрд░реИрдХреНрдЯ рдлрд╝реИрдХреНрдЯрд░реА рдкреИрдЯрд░реНрди рдХреЗ рд╕рд╛рде рдорд┐рд▓рд╛ред рдЬреИрд╕рд╛ рдХрд┐ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ - "рдкрддрд╛ рдирд╣реАрдВ рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ рдЕрдкрдиреЗ рдЖрдк рдХреЛ, рдПрдХ рджреЛрд╕реНрдд рдХреЛ рд╕рд┐рдЦрд╛рдирд╛ред" рдпрд╣ рдЬреНрдЮрд╛рдд рд╣реИ рдХрд┐ рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕рдореЗрдХрд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рд░реНрд╡реЛрддреНрддрдо рддрд░реАрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдкрд╣рд▓реЗ рд╕реЗ рдЕрдзреНрдпрдпрди рдХрд┐рдП рдЧрдП рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рдХреЛ рд╕рдордЭрд╛рдирд╛ рд╣реИред рджреВрд╕рд░рд╛ рдХрд╛рд░рдг - рдЗрд╕ рдкреИрдЯрд░реНрди рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдореБрдЭреЗ рдРрд╕реА рд╕рд╛рдордЧреНрд░реА рдирд╣реАрдВ рдорд┐рд▓реА рдЬреЛ рдореЗрд░реЗ рд▓рд┐рдП рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рд╕рд╛рд░ рдлреИрдХреНрдЯреНрд░реА рдХреЗ рд╕рд╛рд░ (рдХрдо рд╕реЗ рдХрдо рд╣рдмреЗрд░рд╛) рдкрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмрддрд╛рдПрдЧреАред
рддреЛ рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓рд╛ рд╕рд╡рд╛рд▓ рдЬреЛ рдЖрдкрдХреЛ рдЗрд╕ рдкреИрдЯрд░реНрди рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдХреЗ рдЦреБрдж рдХреЛ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: "рдПрдХ рд╕рд╛рд░ рдХрд╛рд░рдЦрд╛рдирд╛ рдХреНрдпрд╛ рд╣реИред" рд╕рдмрд╕реЗ рд╕рд░рд▓ рдФрд░ рд╕рдЯреАрдХ рдЙрддреНрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдПрдмреНрд╕рдЯреНрд░реИрдХреНрдЯ рдлреИрдХреНрдЯреНрд░реА "рдХрд╛рд░рдЦрд╛рдиреЛрдВ рдХрд╛ рдХрд╛рд░рдЦрд╛рдирд╛" рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣рд╛рдБ рдПрдХ рджреВрд╕рд░рд╛ рдкреНрд░рд╢реНрди рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ: тАЬрдХрд┐рд╕реА рдХреЛ рднреАтАЬ рдХрд╛рд░рдЦрд╛рдиреЛрдВ рдХреЗ рдХрд╛рд░рдЦрд╛рдиреЗ тАЭрдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реЛрдЧреА? рдЗрд╕рдХрд╛ рдЙрддреНрддрд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдк рдХрд╛рд░ рдмрд╛рдЬрд╛рд░ рдХрд╛ рдкреВрд░рд╛ рдирд┐рдпрдВрддреНрд░рдг рд▓реЗрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ? рдЖрдк рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдХрд╛рд░ рдмреНрд░рд╛рдВрдб, рдЕрдкрдирд╛ рдЙрддреНрдкрд╛рджрди, рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рд╡рд┐рдЬреНрдЮрд╛рдкрди рдХрдВрдкрдиреА рдХрд╛ рд╕рдВрдЪрд╛рд▓рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрджрд┐ред рд▓реЗрдХрд┐рди, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рдЯреЛрдпреЛрдЯрд╛ рдпрд╛ рдлреЛрд░реНрдб рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░ рдмрд╛рдЬрд╛рд░ рдХреЗ рдРрд╕реЗ рджрд┐рдЧреНрдЧрдЬреЛрдВ рдХреЗ рд╕рд╛рде рд▓рдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рддрдереНрдп рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕ рд╕рдВрдШрд░реНрд╖ рд╕реЗ рд╡рд┐рдЬрдпреА рд╣реЛрдВрдЧреЗред рдЗрди рд╕рднреА рдХрдВрдкрдирд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░рдЦрд╛рдиреЛрдВ рдХреЛ рдЦрд░реАрджрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреЗрд╣рддрд░ рд╕рдорд╛рдзрд╛рди рд╣реЛрдЧрд╛, рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдмреНрд░рд╛рдВрдбреЛрдВ рдХреЗ рддрд╣рдд рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдЬрд╛рд░реА рд░рдЦреЗрдВ рдФрд░ рдЕрдкрдиреА рдЬреЗрдм рдореЗрдВ рд▓рд╛рдн рдбрд╛рд▓реЗрдВред рдЕрдЧрд░ рдореИрдВ рдЧрд▓рдд рдирд╣реАрдВ рд╣реВрдБ, рддреЛ рдЕрд░реНрдерд╡реНрдпрд╡рд╕реНрдерд╛ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ - рдзрд╛рд░рдгред рдпрд╣ рд╣реЛрд▓реНрдбрд┐рдВрдЧ рдПрдмреНрд╕рдЯреНрд░реИрдХреНрдЯ рдлреИрдХреНрдЯреНрд░реА рдпрд╛ "рдлреИрдХреНрдЯреНрд░реАрдЬ рдХреА рдлреИрдХреНрдЯреНрд░реА" рд╣реЛрдЧреАред рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ, рд╕рд╛рд░ рдХрд╛рд░рдЦрд╛рдирд╛ (рд╣реЛрд▓реНрдбрд┐рдВрдЧ) рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдпрд╛ рдПрдХ рд╕рд╛рд░ рд╡рд░реНрдЧ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╣реЛрд▓реНрдбрд┐рдВрдЧ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдЙрджреНрдпрдореЛрдВ рдХреЛ рдЙрди рд╡рд░реНрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред
public interface CarsFactory { } public class ToyotaFactory implements CarsFactory {} public class FordFactory implements CarsFactory {}
рдЕрдЧрд▓рд╛, рдЖрдк рдЕрдкрдиреЗ рдХрд╛рд░рдЦрд╛рдиреЛрдВ рдХреЗ рдкреНрд░рдмрдВрдзрдХреЛрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдХрд╣рддреЗ рд╣реИрдВ: "рдЕрдм рд╕реЗ, рд╣рдо рдЕрдкрдиреЗ рдХрд╛рд░рдЦрд╛рдиреЛрдВ рдореЗрдВ 2 рдкреНрд░рдХрд╛рд░ рдХреЗ рд╢рд░реАрд░ рдХреЗ рд╕рд╛рде рдХрд╛рд░реЛрдВ рдХреЛ рдмрдирд╛рдПрдВрдЧреЗ - рдПрдХ рд╕реЗрдбрд╛рди рдФрд░ рдПрдХ рдХреВрдкред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрд╛рдкрд╛рдиреА ToyotaSedan рдФрд░ ToyotaCoupe рдХрд░реЗрдВрдЧреЗ, рдЕрдореЗрд░рд┐рдХрд┐рдпреЛрдВ FordSedan рдФрд░ FordCoupe рдХрд░реЗрдВрдЧреЗред тАЭ рдФрд░ рдЗрд╕рд▓рд┐рдП рдХрд┐ рдХрд╛рд░рдЦрд╛рдиреЛрдВ рдХреЛ рдпрд╣ рдирд╣реАрдВ рднреВрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рд╢реБрд░реВ рди рдХрд░реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрд╕рдпреВрд╡реА, рд╣рдо рдПрдХ рдкреНрд░рдореБрдЦ рд╕реНрдерд╛рди рдкрд░ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕реНрдерд╛рди (рд╣рдорд╛рд░реЗ рдХрд╛рд░рдЦрд╛рдиреЗ рдореЗрдВ рд╕рд┐рдбреИрди рдФрд░ рдХреВрдк рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдЪрд┐рддреНрд░) рдХреЛ рд▓рдЯрдХрд╛рдПрдВрдЧреЗ (рдПрдХ рд╡рд┐рд╢реЗрд╖ рдХрд╛рд░рдЦрд╛рдиреЗ рдореЗрдВ, рдЗрдВрдЬреАрдирд┐рдпрд░ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдПрдВрдЧреЗ рдХрд┐ рдХрд╛рд░реЛрдВ рдХреЛ рдЙрдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреИрд╕реЗ рдмрдирд╛рдИ рдЬрд╛рдП)ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдорд╛рд░реЗ CarsFactory рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ 2 рд╡рд┐рдзрд┐рдпрд╛рдБ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИрдВ:
public interface CarsFactory { Sedan createSedan(); Coupe createCoupe(); }
рддрджрдиреБрд╕рд╛рд░, CarsFactory рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдмрд╛рд▓ рд╡рд░реНрдЧреЛрдВ рдореЗрдВ, рдЗрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рднреА рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
public class ToyotaFactory implements CarsFactory { @Override public Sedan createSedan() { return new ToyotaSedan(); } @Override public Coupe createCoupe() { return new ToyotaCoupe(); } } public class FordFactory implements CarsFactory { @Override public Sedan createSedan() { return new FordSedan(); } @Override public Coupe createCoupe() { return new FordCoupe(); } }
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп рдХрд╛ рдкреНрд░рдХрд╛рд░ рд╡рд╛рдкрд╕реА рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░ рд╣реЛрдЧрд╛ - рд╕реЗрдбрд╛рди рдФрд░ рдХреВрдкред рд╣рдорд╛рд░реЗ рд╕рд╛рджреГрд╢реНрдп рдореЗрдВ рд▓реМрдЯрдХрд░ - рдЖрдкрдиреЗ рдХрд╛рд░рдЦрд╛рдиреЗ рдХреЛ рдПрдХ рдкрд╛рд▓рдХреА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ - рдЖрдкрдХреЛ рдПрдХ рдкрд╛рд▓рдХреА рдорд┐рд▓реАред рдлреЛрд░реНрдб рд╕реЗрдбрд╛рди рдЬреИрд╕реЗ рдлреАрдЪрд░реНрд╕ рдЖрдкрдХреЗ рд▓рд┐рдП рд░реБрдЪрд┐рдХрд░ рдирд╣реАрдВ рд╣реИрдВред
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдХреБрдЫ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЛ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╢рд░реАрд░ рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ - рдПрдХ рд╕реЗрдбрд╛рди рдФрд░ рдПрдХ рдХреВрдкред рдпреЗ рд╕рдВрд╕реНрдерд╛рдПрдВ рдЗрдВрдЯрд░рдлреЗрд╕ рд╣реЛрдВрдЧреАред
public interface Sedan {} public interface Coupe {}
рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЗрди рдЖрдХреГрддрд┐рдпреЛрдВ рдореЗрдВ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдХрд╛рд░рдЦрд╛рдиреЗ рдореЗрдВ рдмрдирд╛рдИ рдЧрдИ рдХрд╛рд░реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЕрд╡рддрд╛рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
public class ToyotaCoupe implements Coupe { public ToyotaCoupe() { System.out.println("Create ToyotaCoupe"); } } public class ToyotaSedan implements Sedan { public ToyotaSedan() { System.out.println("Create ToyotaSedan"); } } public class FordCoupe implements Coupe { public FordCoupe () { System.out.println("Create FordCoupe"); } } public class FordSedan implements Sedan { public FordSedan() { System.out.println("Create FordSedan"); } }
рдпрд╣ рд╕рдм рд╣реИ, рд╣рдорд╛рд░реЗ "рдХрд╛рд░рдЦрд╛рдиреЛрдВ рдХрд╛ рдХрд╛рд░рдЦрд╛рдирд╛" рдХрд┐рд╕реА рднреА рдмреНрд░рд╛рдВрдб рдФрд░ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреА рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдЖрдк рдпрд╣ рддрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдПрд╕рдпреВрд╡реА рдХрд╛ рдЙрддреНрдкрд╛рджрди рд╢реБрд░реВ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рдЖрдкрдХреЛ рдПрдХ рдЕрдиреНрдп рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдФрд░ рд╣реЛрд▓реНрдбрд┐рдВрдЧ рдХреЗ рдХрд╛рд░реНрдпрд╛рд▓рдп рдореЗрдВ рдПрдХ рдПрд╕рдпреВрд╡реА рдХреЗ рдбреНрд░рд╛рдЗрдВрдЧ рдХреЛ рд▓рдЯрдХрд╛рдПрдВрдЧреЗ (рдХрд╛рд░реНрд╕рдлреИрдХреНрдЯреНрд░реА рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЗрд╕реЗ рд╕рд╣рд╛рдпрдХ рдХрд╛рд░рдЦрд╛рдиреЛрдВ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░реЗрдВ)ред рдпрд╣ рднреА рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдЖрдк рдмрд╛рдЬрд╛рд░ рдХреЗ рдПрдХ рдФрд░ рдЯреБрдХрдбрд╝реЗ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░рдиреЗ рдФрд░ рдЦрд░реАрджрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд░реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рднреА рдирд┐рд╕рд╛рди рд╕рдВрдпрдВрддреНрд░ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдПрдХ рдФрд░ рд╡рд░реНрдЧ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ CarsFactory - NissanFactory рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рдмреНрд░рд╛рдВрдб (NissanCoupe, NissanSedan, рдЖрджрд┐) рдХреЗ рддрд╣рдд рдЕрдкрдиреА рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрддреНрдкрд╛рджрди рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ (рдХрд╛рд░ рдЦрд░реАрджрд╛рд░) рд╣рдорд╛рд░реА рд╣реЛрд▓реНрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдмрд╛рддрдЪреАрдд рдХрд░реЗрдЧрд╛? рдЦрд░реАрджрд╛рд░ рдЖрдорддреМрд░ рдкрд░ рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рджреБрдирд┐рдпрд╛ рдХреЗ рд╕рднреА рдСрдЯреЛрдореЛрдмрд╛рдЗрд▓ рдХрд╛рд░рдЦрд╛рдиреЛрдВ рдХреЛ рдЬрдмреНрдд рдХрд░ рд▓рд┐рдпрд╛ рд╣реИред рд╡рд╣ рд╣реЛрд▓реНрдбрд┐рдВрдЧ рдХреЗ рдЫреЛрдЯреЗ рдорд╛рдореВрд▓реА рдХрд╛рд░реНрдпрд╛рд▓рдп рдореЗрдВ рдЖрддрд╛ рд╣реИ рдФрд░ рдХрд╣рддрд╛ рд╣реИ: "рдореБрдЭреЗ рдПрдХ рдХрд╛рд░ рдЪрд╛рд╣рд┐рдП!" "рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛!" - рд╣рдо рдЙрд╕реЗ рдмрддрд╛рддреЗ рд╣реИрдВ, - "рдЖрдкрдиреЗ рдкрддреЗ рдкрд░ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рд╣реИ! рдХрд╛рд░рдЦрд╛рдиреЛрдВ рдХрд╛ рдПрдХ рдХрд╛рд░рдЦрд╛рдирд╛ рд╣реИ рдЬреЛ рдЖрдк рдХреА рдЬрд░реВрд░рдд рд╣реИ! "
CarsFactory factory;
"рдЖрдк рдХрд┐рд╕ рдХрд╛рд░ рдХрдВрдкрдиреА рдХреЛ рджрд┐рди рдХреЗ рдЗрд╕ рд╕рдордп рдореЗрдВ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ?", рд╣рдо рдкреВрдЫрддреЗ рд╣реИрдВред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдХреЛрдИ рдЧреНрд░рд╛рд╣рдХ рдЯреЛрдпреЛрдЯрд╛ рдЦрд░реАрджрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВ!
factory = new ToyotaFactory();
"рдЖрдк рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╢рд░реАрд░ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗ?" рдЪрд▓реЛ рдПрдХ рдкрд╛рд▓рдХреА рдХрд╣рддреЗ рд╣реИрдВред "рдмрдврд╝рд┐рдпрд╛ рд╡рд┐рдХрд▓реНрдк!"
factory.createSedan();
рдХрд╛рд░ рддреИрдпрд╛рд░ рд╣реИ, рдЖрдк рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ!