ΠΡΠΈΠ²ΡΡ Π΄ΡΡΠ³! Π‘ΡΠΎΠ³ΠΎΠ΄Π½Ρ ΠΌΠΈ ΠΏΡΠΎΠ΄ΠΎΠ²ΠΆΠΈΠΌΠΎ Π²ΠΈΠ²ΡΠ°ΡΠΈ Π· ΡΠΎΠ±ΠΎΡ ΠΏΠ°ΡΠ΅ΡΠ½ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΡΠ²Π°Π½Π½Ρ. Π£ ΡΡΠΉ Π»Π΅ΠΊΡΡΡ Π³ΠΎΠ²ΠΎΡΠΈΡΠΈΠΌΠ΅ΠΌΠΎ ΠΏΡΠΎ Π€Π°Π±ΡΠΈΠΊΠ°. ΠΠ±Π³ΠΎΠ²ΠΎΡΠΈΠΌΠΎ Π· ΡΠΎΠ±ΠΎΡ, ΡΠΊΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π²ΠΈΡΡΡΡΡΡΡ Π·Π° Π΄ΠΎΠΏΠΎΠΌΠΎΠ³ΠΎΡ Π΄Π°Π½ΠΎΠ³ΠΎ ΡΠ°Π±Π»ΠΎΠ½Ρ, ΠΏΠΎΠ΄ΠΈΠ²ΠΈΠΌΠΎΡΡ Π½Π° ΠΏΡΠΈΠΊΠ»Π°Π΄Ρ ΡΠΎΠ³ΠΎ, ΡΠΊ ΡΠ°Π±ΡΠΈΠΊΠ° Π΄ΠΎΠΏΠΎΠΌΠ°Π³Π°Ρ Π²ΡΠ΄ΠΊΡΠΈΠ²Π°ΡΠΈ ΠΊΠ°Π²'ΡΡΠ½Ρ. Π ΡΠ΅ Ρ Π΄Π°ΠΌ 5 ΠΏΡΠΎΡΡΠΈΡ
ΠΊΡΠΎΠΊΡΠ² Π΄Π»Ρ ΡΡΠ²ΠΎΡΠ΅Π½Π½Ρ ΡΠ°Π±ΡΠΈΠΊΠΈ. Π©ΠΎΠ± Π±ΡΡΠΈ Π· ΡΡΡΠΌΠ° Π½Π° ΠΎΠ΄Π½ΡΠΉ Ρ
Π²ΠΈΠ»Ρ Ρ Π»Π΅Π³ΠΊΠΎ Π²Π»ΠΎΠ²Π»ΡΠ²Π°ΡΠΈ ΡΡΡΡ, ΡΠΎΠ±Ρ ΠΌΠ°ΡΡΡ Π±ΡΡΠΈ Π·Π½Π°ΠΉΠΎΠΌΡ ΡΠ°ΠΊΡ ΡΠ΅ΠΌΠΈ:
- Π‘ΠΏΠ°Π΄ΠΊΡΠ²Π°Π½Π½Ρ Π² Java
- ΠΠ²ΡΠΆΠ΅Π½Π½Ρ ΡΠ° ΡΠΎΠ·ΡΠΈΡΠ΅Π½Π½Ρ ΠΏΠΎΡΠΈΠ»Π°Π»ΡΠ½ΠΈΡ ΡΠΈΠΏΡΠ² Ρ Java
- ΠΠ·Π°ΡΠΌΠΎΠ΄ΡΡ ΠΌΡΠΆ ΡΡΠ·Π½ΠΈΠΌΠΈ ΠΊΠ»Π°ΡΠ°ΠΌΠΈ ΡΠ° ΠΎΠ±'ΡΠΊΡΠ°ΠΌΠΈ
Π©ΠΎ ΡΠ°ΠΊΠ΅ Π€Π°Π±ΡΠΈΠΊΠ°?
Π¨Π°Π±Π»ΠΎΠ½ ΠΏΡΠΎΠ΅ΠΊΡΡΠ²Π°Π½Π½Ρ Π€Π°Π±ΡΠΈΠΊΠ° Π΄ΠΎΠ·Π²ΠΎΠ»ΡΡ ΠΊΠ΅ΡΡΠ²Π°ΡΠΈ ΡΡΠ²ΠΎΡΠ΅Π½Π½ΡΠΌ ΠΎΠ±'ΡΠΊΡΡΠ². ΠΡΠΎΡΠ΅Ρ ΡΡΠ²ΠΎΡΠ΅Π½Π½Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±'ΡΠΊΡΠ° Π½Π΅ ΡΠ΅ ΡΠΎΠ± ΠΏΡΠΎΡΡΠΈΠΉ, Π° ΠΉ Π½Π΅ Π½Π°Π΄ΡΠΎ ΡΠΊΠ»Π°Π΄Π½ΠΈΠΉ. Π£ΡΡ ΠΌΠΈ Π·Π½Π°ΡΠΌΠΎ, ΡΠΎ Π΄Π»Ρ ΡΡΠ²ΠΎΡΠ΅Π½Π½Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±'ΡΠΊΡΠ° Π½Π΅ΠΎΠ±Ρ ΡΠ΄Π½ΠΎ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠ²Π°ΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡnew
. Π ΠΌΠΎΠΆΠ΅ Π·Π΄Π°ΡΠΈΡΡ, ΡΠΎ ΡΡΡ Π½Π΅ΠΌΠ° ΡΠΈΠΌ ΠΊΠ΅ΡΡΠ²Π°ΡΠΈ, ΠΏΡΠΎΡΠ΅ ΡΠ΅ Π½Π΅ ΡΠ°ΠΊ. Π‘ΠΊΠ»Π°Π΄Π½ΠΎΡΡ ΠΌΠΎΠΆΡΡΡ Π²ΠΈΠ½ΠΈΠΊΠ½ΡΡΠΈ, ΠΊΠΎΠ»ΠΈ Π² Π½Π°ΡΠΎΠΌΡ Π΄ΠΎΠ΄Π°ΡΠΊΡ Ρ ΠΏΠ΅Π²Π½ΠΈΠΉ ΠΊΠ»Π°Ρ, ΡΠΊΠΈΠΉ ΠΌΠ°Ρ Π±Π΅Π·Π»ΡΡ ΡΠΏΠ°Π΄ΠΊΠΎΡΠΌΡΡΠ², Ρ Π½Π΅ΠΎΠ±Ρ
ΡΠ΄Π½ΠΎ ΡΡΠ²ΠΎΡΡΠ²Π°ΡΠΈ Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΏΠ΅Π²Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡ Π·Π°Π»Π΅ΠΆΠ½ΠΎ Π²ΡΠ΄ Π΄Π΅ΡΠΊΠΈΡ
ΡΠΌΠΎΠ². Π€Π°Π±ΡΠΈΠΊΠ° β ΡΠ΅ ΡΠ°Π±Π»ΠΎΠ½ ΠΏΡΠΎΠ΅ΠΊΡΡΠ²Π°Π½Π½Ρ, ΡΠΊΠΈΠΉ Π΄ΠΎΠΏΠΎΠΌΠ°Π³Π°Ρ Π²ΠΈΡΡΡΠΈΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΡΠ²ΠΎΡΠ΅Π½Π½Ρ ΡΡΠ·Π½ΠΈΡ
ΠΎΠ±'ΡΠΊΡΡΠ² Π·Π°Π»Π΅ΠΆΠ½ΠΎ Π²ΡΠ΄ ΡΠΌΠΎΠ². ΠΠ±ΡΡΡΠ°ΠΊΡΠ½ΠΎ, ΡΠΈ Π½Π΅ ΡΠ°ΠΊ? ΠΡΠ»ΡΡΠ΅ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠΈΠΊΠΈ ΡΠ° ΡΡΠ½ΠΎΡΡΡ Π·'ΡΠ²ΠΈΡΡΡΡ, ΠΊΠΎΠ»ΠΈ ΠΌΠΈ ΡΠΎΠ·Π³Π»ΡΠ½Π΅ΠΌΠΎ ΠΏΡΠΈΠΊΠ»Π°Π΄ Π½ΠΈΠΆΡΠ΅.
Π‘ΡΠ²ΠΎΡΡΡΠΌΠΎ ΡΡΠ·Π½Ρ Π²ΠΈΠ΄ΠΈ ΠΊΠ°Π²ΠΈ
ΠΡΠΈΠΏΡΡΡΠΈΠΌΠΎ, ΠΌΠΈ Ρ ΠΎΡΠ΅ΠΌΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΡΠ²Π°ΡΠΈ ΠΊΠ°Π²'ΡΡΠ½Ρ. ΠΠ°ΠΌ Π½Π΅ΠΎΠ±Ρ ΡΠ΄Π½ΠΎ Π½Π°Π²ΡΠΈΡΠΈΡΡ Π³ΠΎΡΡΠ²Π°ΡΠΈ ΡΡΠ·Π½Ρ Π²ΠΈΠ΄ΠΈ ΠΊΠ°Π²ΠΈ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π² Π½Π°ΡΠΎΠΌΡ Π΄ΠΎΠ΄Π°ΡΠΊΡ ΠΌΠΈ ΡΡΠ²ΠΎΡΠΈΠΌΠΎ ΠΊΠ»Π°Ρ ΠΊΠ°Π²ΠΈ ΡΠ° ΡΡ ΠΏΠΎΡ ΡΠ΄Π½Ρ: Π°ΠΌΠ΅ΡΠΈΠΊΠ°Π½ΠΎ, ΠΊΠ°ΠΏΡΡΠΈΠ½ΠΎ, Π΅ΡΠΏΡΠ΅ΡΠΎ, Π»Π°ΡΡΠ΅ β ΡΡ Π²ΠΈΠ΄ΠΈ ΠΊΠ°Π²ΠΈ, ΡΠΊΡ ΠΌΠΈ Π³ΠΎΡΡΠ²Π°ΡΠΈΠΌΠ΅ΠΌΠΎ. ΠΠΎΡΠ½Π΅ΠΌΠΎ ΡΠ· Π·Π°Π³Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ°Π²ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡ:public class Coffee {
public void grindCoffee(){
// ΠΏΠ΅ΡΠ΅ΠΌΠ°Π»ΡΠ²Π°Π΅ΠΌ ΠΊΠΎΡΠ΅
}
public void makeCoffee(){
// Π΄Π΅Π»Π°Π΅ΠΌ ΠΊΠΎΡΠ΅
}
public void pourIntoCup(){
// Π½Π°Π»ΠΈΠ²Π°Π΅ΠΌ Π² ΡΠ°ΡΠΊΡ
}
}
ΠΠ°Π»Ρ ΡΡΠ²ΠΎΡΠΈΠΌΠΎ ΠΉΠΎΠ³ΠΎ ΡΠΏΠ°Π΄ΠΊΠΎΡΠΌΡΡΠ²:
public class Americano extends Coffee {}
public class Cappuccino extends Coffee {}
public class CaffeLatte extends Coffee {}
public class Espresso extends Coffee {}
ΠΠ°ΡΡ ΠΊΠ»ΡΡΠ½ΡΠΈ Π·Π°ΠΌΠΎΠ²Π»ΡΡΠΈΠΌΡΡΡ Π±ΡΠ΄Ρ-ΡΠΊΠΈΠΉ Π²ΠΈΠ΄ ΠΊΠ°Π²ΠΈ, Ρ ΡΡ ΡΠ½ΡΠΎΡΠΌΠ°ΡΡΡ ΠΏΠΎΡΡΡΠ±Π½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΡ. Π¦Π΅ ΠΌΠΎΠΆΠ½Π° Π·ΡΠΎΠ±ΠΈΡΠΈ ΡΡΠ·Π½ΠΈΠΌΠΈ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ, Π½Π°ΠΏΡΠΈΠΊΠ»Π°Π΄, Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠ²Π°ΡΠΈ String
. ΠΠ»Π΅ Π½Π°ΠΉΠΊΡΠ°ΡΠ΅ Π΄Π»Ρ ΡΠΈΡ
ΡΡΠ»Π΅ΠΉ ΠΏΡΠ΄ΡΠΉΠ΄Π΅ enum
. Π‘ΡΠ²ΠΎΡΠΈΠΌΠΎ enum
ΡΠ° Π²ΠΈΠ·Π½Π°ΡΠΈΠΌΠΎ Π² Π½ΡΠΎΠΌΡ ΡΠΈΠΏΠΈ ΠΊΠ°Π²ΠΈ, Π½Π° ΡΠΊΡ ΠΌΠΈ ΠΏΡΠΈΠΉΠΌΠ°ΡΠΌΠΎ Π·Π°ΠΌΠΎΠ²Π»Π΅Π½Π½Ρ:
public enum CoffeeType {
ESPRESSO,
AMERICANO,
CAFFE_LATTE,
CAPPUCCINO
}
ΠΡΠ΄ΠΌΡΠ½Π½ΠΎ, ΡΠ΅ΠΏΠ΅Ρ Π½Π°ΠΏΠΈΡΠ΅ΠΌΠΎ ΠΊΠΎΠ΄ Π½Π°ΡΠΎΡ ΠΊΠ°Π²'ΡΡΠ½Ρ:
public class CoffeeShop {
public Coffee orderCoffee(CoffeeType type) {
Coffee coffee = null;
switch (type) {
case AMERICANO:
coffee = new Americano();
break;
case ESPRESSO:
coffee = new Espresso();
break;
case CAPPUCCINO:
coffee = new CappucΡino();
break;
case CAFFE_LATTE:
coffee = new CaffeLatte();
break;
}
coffee.grindCoffee();
coffee.makeCoffee();
coffee.pourIntoCup();
System.out.println("ΠΠΎΡ Π²Π°Ρ ΠΊΠΎΡΠ΅! Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ, ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΡΠ΅ Π΅ΡΠ΅!");
return coffee;
}
}
ΠΠ΅ΡΠΎΠ΄ orderCoffee
ΠΌΠΎΠΆΠ½Π° ΡΠΎΠ·Π΄ΡΠ»ΠΈΡΠΈ Π½Π° Π΄Π²Ρ ΡΠΊΠ»Π°Π΄ΠΎΠ²Ρ:
- Π‘ΡΠ²ΠΎΡΠ΅Π½Π½Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΠΊΠ°Π²ΠΈ Π² Π±Π»ΠΎΡΡ
switch-case
. Π‘Π°ΠΌΠ΅ ΡΡΡ Π²ΡΠ΄Π±ΡΠ²Π°ΡΡΡΡΡ ΡΠ΅, ΡΠΎ ΡΠΎΠ±ΠΈΡΡ Π€Π°Π±ΡΠΈΠΊΠ° β ΡΡΠ²ΠΎΡΠ΅Π½Π½Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΡ, Π·Π°Π»Π΅ΠΆΠ½ΠΎ Π²ΡΠ΄ ΡΠΌΠΎΠ². - Π‘Π°ΠΌΠ΅ ΠΏΡΠΈΠ³ΠΎΡΡΠ²Π°Π½Π½Ρ - ΠΏΠ΅ΡΠ΅ΠΌΠΎΠ»ΠΊΠ°, ΠΏΡΠΈΠ³ΠΎΡΡΠ²Π°Π½Π½Ρ ΡΠ° ΡΠΎΠ·Π»ΠΈΡΡΡ Π² ΡΠ°ΡΠΊΡ.
- Π‘Π°ΠΌ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΏΡΠΈΠ³ΠΎΡΡΠ²Π°Π½Π½Ρ (ΠΏΠ΅ΡΠ΅ΠΌΠΎΠ»ΠΊΠ°, ΠΏΡΠΈΠ³ΠΎΡΡΠ²Π°Π½Π½Ρ ΡΠ° ΡΠΎΠ·Π»ΠΈΡΡΡ Ρ ΡΠ°ΡΠΊΡ) Π·Π°Π»ΠΈΡΠΈΡΡΡΡ Π½Π΅Π·ΠΌΡΠ½Π½ΠΈΠΌ (ΠΏΡΠΈΠ½Π°ΠΉΠΌΠ½Ρ ΠΌΠΈ Π½Π° ΡΠ΅ ΡΠΎΠ·ΡΠ°Ρ ΠΎΠ²ΡΡΠΌΠΎ).
- Π ΠΎΡΡ Π°ΡΠΎΡΡΠΈΠΌΠ΅Π½Ρ ΠΊΠ°Π²ΠΈ ΠΌΠΎΠΆΠ΅ Π·ΠΌΡΠ½ΠΈΡΠΈΡΡ. ΠΠΎΠΆΠ»ΠΈΠ²ΠΎ, ΠΌΠΈ ΠΏΠΎΡΠ½Π΅ΠΌΠΎ Π³ΠΎΡΡΠ²Π°ΡΠΈ ΠΌΠΎΠΊ. ΠΠΎΠΊΠΊΠ°. ΠΠΎΠΊΠΊΠ°ΡΡβ¦ ΠΠΎΡΠΏΠΎΠ΄Ρ Π· Π½ΠΈΠΌ, Π½ΠΎΠ²ΠΈΠΉ Π²ΠΈΠ΄ ΠΊΠ°Π²ΠΈ.
switch-case
. Π’Π°ΠΊΠΎΠΆ ΠΌΠΎΠΆΠ»ΠΈΠ²ΠΎ, Π² Π½Π°ΡΡΠΉ ΠΊΠ°Π²'ΡΡΠ½Ρ ΠΌΠ΅ΡΠΎΠ΄ orderCoffee
Π±ΡΠ΄Π΅ Π½Π΅ ΡΠ΄ΠΈΠ½ΠΈΠΌ ΠΌΡΡΡΠ΅ΠΌ, Π² ΡΠΊΠΎΠΌΡ ΠΌΠΈ ΡΡΠ²ΠΎΡΡΠ²Π°ΡΠΈΠΌΠ΅ΠΌΠΎ ΡΡΠ·Π½Ρ Π²ΠΈΠ΄ΠΈ ΠΊΠ°Π²ΠΈ. ΠΡΠΆΠ΅, Π²Π½ΠΎΡΠΈΡΠΈ Π·ΠΌΡΠ½ΠΈ Π΄ΠΎΠ²Π΅Π΄Π΅ΡΡΡΡ Ρ ΠΊΡΠ»ΡΠΊΠΎΡ
ΠΌΡΡΡΡΡ
. Π’ΠΎΠ±Ρ Π²ΠΆΠ΅ Π·ΡΠΎΠ·ΡΠΌΡΠ»ΠΎ, Π΄ΠΎ ΡΠΎΠ³ΠΎ Ρ Ρ
ΠΈΠ»Ρ. ΠΠ°ΠΌ ΠΏΠΎΡΡΡΠ±Π½ΠΎ ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΡΠΈ. ΠΠΈΠ½Π΅ΡΡΠΈ Π±Π»ΠΎΠΊ, ΡΠΊΠΈΠΉ Π²ΡΠ΄ΠΏΠΎΠ²ΡΠ΄Π°Ρ Π·Π° ΡΡΠ²ΠΎΡΠ΅Π½Π½Ρ ΠΊΠ°Π²ΠΈ, Π² ΠΎΠΊΡΠ΅ΠΌΠΈΠΉ ΠΊΠ»Π°Ρ ΡΠ· Π΄Π²ΠΎΡ
ΠΏΡΠΈΡΠΈΠ½:
- ΠΠΈ Π·ΠΌΠΎΠΆΠ΅ΠΌΠΎ ΠΏΠ΅ΡΠ΅Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠ²Π°ΡΠΈ Π»ΠΎΠ³ΡΠΊΡ ΡΡΠ²ΠΎΡΠ΅Π½Π½Ρ ΠΊΠ°Π²ΠΈ Π² ΡΠ½ΡΠΈΡ ΠΌΡΡΡΡΡ .
- Π―ΠΊΡΠΎ Π°ΡΠΎΡΡΠΈΠΌΠ΅Π½Ρ Π·ΠΌΡΠ½ΠΈΡΡΡΡ, Π½Π°ΠΌ Π½Π΅ Π΄ΠΎΠ²Π΅Π΄Π΅ΡΡΡΡ ΠΏΡΠ°Π²ΠΈΡΠΈ ΠΊΠΎΠ΄ ΡΠΊΡΡΠ·Ρ, Π΄Π΅ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠ²Π°ΡΠΈΠΌΠ΅ΡΡΡΡ ΡΡΠ²ΠΎΡΠ΅Π½Π½Ρ ΠΊΠ°Π²ΠΈ. ΠΠΎΡΡΠ°ΡΠ½ΡΠΎ Π·ΠΌΡΠ½ΠΈΡΠΈ ΠΊΠΎΠ΄ ΡΡΠ»ΡΠΊΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌΡ ΠΌΡΡΡΡ.
ΠΠ°Π±ΠΎΠΌΠΎ Π½Π°ΡΡ ΠΏΠ΅ΡΡΡ ΡΠ°Π±ΡΠΈΠΊΡ
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΡΡΠ²ΠΎΡΠΈΠΌΠΎ Π½ΠΎΠ²ΠΈΠΉ ΠΊΠ»Π°Ρ, ΡΠΊΠΈΠΉ Π²ΡΠ΄ΠΏΠΎΠ²ΡΠ΄Π°ΡΠΈΠΌΠ΅ Π»ΠΈΡΠ΅ Π·Π° ΡΡΠ²ΠΎΡΠ΅Π½Π½Ρ ΠΏΠΎΡΡΡΠ±Π½ΠΈΡ Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡΠ² ΠΊΠ»Π°ΡΡΠ² ΠΊΠ°Π²ΠΈ:public class SimpleCoffeeFactory {
public Coffee createCoffee (CoffeeType type) {
Coffee coffee = null;
switch (type) {
case AMERICANO:
coffee = new Americano();
break;
case ESPRESSO:
coffee = new Espresso();
break;
case CAPPUCCINO:
coffee = new Cappucino();
break;
case CAFFE_LATTE:
coffee = new CaffeLatte();
break;
}
return coffee;
}
}
ΠΡΡΠ°Ρ ΡΠ΅Π±Π΅! ΠΠΈ ΡΠΎΠΉΠ½ΠΎ ΡΠ΅Π°Π»ΡΠ·ΡΠ²Π°Π»ΠΈ ΡΠ°Π±Π»ΠΎΠ½ ΠΏΡΠΎΠ΅ΠΊΡΡΠ²Π°Π½Π½Ρ Π€Π°Π±ΡΠΈΠΊΠ° Ρ Π½Π°ΠΉΠΏΡΠΎΡΡΡΡΠΎΠΌΡ Π²ΠΈΠ³Π»ΡΠ΄Ρ. Π₯ΠΎΡΠ° Π²ΡΠ΅ ΠΌΠΎΠ³Π»ΠΎ Π±ΡΡΠΈ ΡΠ΅ ΠΏΡΠΎΡΡΡΡΠ΅, ΡΠΊΡΠΎ Π·ΡΠΎΠ±ΠΈΡΠΈ ΠΌΠ΅ΡΠΎΠ΄ createCoffee
ΡΡΠ°ΡΠΈΡΠ½ΠΈΠΌ. ΠΠ»Π΅ ΡΠΎΠ΄Ρ ΠΌΠΈ Π²ΡΡΠ°ΡΠ°Π±ΠΎ Π΄Π²Ρ ΠΌΠΎΠΆΠ»ΠΈΠ²ΠΎΡΡΡ:
- ΡΡΠΏΠ°Π΄ΠΊΠΎΠ²ΡΠ²Π°ΡΠΈΡΡ Π²ΡΠ΄
SimpleCoffeeFactory
Ρ ΠΏΠ΅ΡΠ΅Π²ΠΈΠ·Π½Π°ΡΠ°ΡΠΈ ΠΌΠ΅ΡΠΎΠ΄createCoffee
. - ΠΠΏΡΠΎΠ²Π°Π΄ΠΆΡΠ²Π°ΡΠΈ Π½Π΅ΠΎΠ±Ρ ΡΠ΄Π½Ρ ΡΠ΅Π°Π»ΡΠ·Π°ΡΡΡ ΡΠ°Π±ΡΠΈΠΊΠΈ Ρ Π½Π°ΡΡ ΠΊΠ»Π°ΡΠΈ.
ΠΠΈΠΊΠΎΡΠΈΡΡΠ°Π½Π½Ρ ΡΠ°Π±ΡΠΈΠΊΠΈ Π² ΠΊΠ°Π²'ΡΡΠ½Ρ
ΠΠ΅ΡΠ΅ΠΏΠΈΡΠ΅ΠΌΠΎ ΠΊΠ»Π°Ρ Π½Π°ΡΠΎΡ ΠΊΠ°Π²'ΡΡΠ½Ρ Π· Π²ΠΈΠΊΠΎΡΠΈΡΡΠ°Π½Π½ΡΠΌ ΡΠ°Π±ΡΠΈΠΊΠΈ:public class CoffeeShop {
private final SimpleCoffeeFactory coffeeFactory;
public CoffeeShop(SimpleCoffeeFactory coffeeFactory) {
this.coffeeFactory = coffeeFactory;
}
public Coffee orderCoffee(CoffeeType type) {
Coffee coffee = coffeeFactory.createCoffee(type);
coffee.grindCoffee();
coffee.makeCoffee();
coffee.pourIntoCup();
System.out.println("ΠΠΎΡ Π²Π°Ρ ΠΊΠΎΡΠ΅! Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ, ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΡΠ΅ Π΅ΡΠ΅!");
return coffee;
}
}
Π§ΡΠ΄ΠΎΠ²ΠΎ. Π’Π΅ΠΏΠ΅Ρ ΡΡ
Π΅ΠΌΠ°ΡΠΈΡΠ½ΠΎ ΡΠ° Π»Π°ΠΊΠΎΠ½ΡΡΠ½ΠΎ ΡΠΏΡΠΎΠ±ΡΡΠΌΠΎ ΠΎΠΏΠΈΡΠ°ΡΠΈ ΡΡΡΡΠΊΡΡΡΡ ΡΠ°Π±Π»ΠΎΠ½Ρ ΠΏΡΠΎΠ΅ΠΊΡΡΠ²Π°Π½Π½Ρ Π€Π°Π±ΡΠΈΠΊΠ°.
5 ΠΊΡΠΎΠΊΡΠ² Π΄ΠΎ Π²ΡΠ΄ΠΊΡΠΈΡΡΡ Π²Π»Π°ΡΠ½ΠΎΡ ΡΠ°Π±ΡΠΈΠΊΠΈ
ΠΡΠΎΠΊ 1. Π£ ΡΠ΅Π±Π΅ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΡ ΠΊΠ»Π°Ρ ΡΠ· ΠΊΡΠ»ΡΠΊΠΎΠΌΠ° Π½Π°ΡΠ°Π΄ΠΊΠ°ΠΌΠΈ, ΡΠΊ Π½Π° ΠΌΠ°Π»ΡΠ½ΠΊΡ Π½ΠΈΠΆΡΠ΅: ΠΡΠΎΠΊ 2. Π’ΠΈ ΡΡΠ²ΠΎΡΡΡΡenum
, Π² ΡΠΊΠΎΠΌΡ Π²ΠΈΠ·Π½Π°ΡΠ°ΡΡ enum-Π·ΠΌΡΠ½Π½Ρ Π΄Π»Ρ ΠΊΠΎΠΆΠ½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡ-ΡΠΏΠ°Π΄ΠΊΠΎΡΠΌΡΡ:
enum CatType {
LION,
TIGER,
BARSIK
}
ΠΡΠΎΠΊ 3. Π’ΠΈ Π±ΡΠ΄ΡΡΡ ΡΠ²ΠΎΡ ΡΠ°Π±ΡΠΈΠΊΡ. ΠΠ°Π·ΠΈΠ²Π°ΡΡ ΡΡ MyClassFactory
, ΠΊΠΎΠ΄ Π½ΠΈΠΆΡΠ΅:
class CatFactory {}
ΠΡΠΎΠΊ 4. Π’ΠΈ ΡΡΠ²ΠΎΡΡΡΡ Ρ ΡΠ²ΠΎΡΠΉ ΡΠ°Π±ΡΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄ createMyClass
, ΡΠΊΠΈΠΉ ΠΏΡΠΈΠΉΠΌΠ°Ρ Π·ΠΌΡΠ½Π½Ρ- enum
MyClassType
. ΠΠΎΠ΄ Π½ΠΈΠΆΡΠ΅:
class CatFactory {
public Cat createCat(CatType type) {
}
}
ΠΡΠΎΠΊ 5. Π’ΠΈ ΠΏΠΈΡΠ΅Ρ Ρ ΡΡΠ»Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ Π±Π»ΠΎΠΊ switch-case
, Π² ΡΠΊΠΎΠΌΡ ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°ΡΡ Π²ΡΡ Π·Π½Π°ΡΠ΅Π½Π½Ρ enum Ρ ΡΡΠ²ΠΎΡΡΡΡ Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡ, Π²ΡΠ΄ΠΏΠΎΠ²ΡΠ΄Π½ΠΈΠΉ enum
Π·Π½Π°ΡΠ΅Π½Π½Ρ:
class CatFactory {
public Cat createCat(CatType type) {
Cat cat = null;
switch (type) {
case LION:
cat = new Barsik();
break;
case TIGER:
cat = new Tiger();
break;
case BARSIK:
cat = new Lion();
break;
}
return cat;
}
}
Π―ΠΊ Π±ΠΎΡ.