JavaRush /ื‘ืœื•ื’ Java /Random-HE /ื“ืคื•ืก ืขื™ืฆื•ื‘ "ืืกื˜ืจื˜ื’ื™ื”"

ื“ืคื•ืก ืขื™ืฆื•ื‘ "ืืกื˜ืจื˜ื’ื™ื”"

ืคื•ืจืกื ื‘ืงื‘ื•ืฆื”
ืฉืœื•ื! ื‘ื”ืจืฆืื•ืช ืงื•ื“ืžื•ืช ื›ื‘ืจ ื ืชืงืœื ื• ื‘ืžื•ืฉื’ ื›ื–ื” ื›ืžื• "ื“ืคื•ืก ืขื™ืฆื•ื‘ื™". ืœืžืงืจื” ืฉืฉื›ื—ืช, ื ื–ื›ื™ืจ ืœืš: ืžื•ื ื— ื–ื” ืžืฆื™ื™ืŸ ืคืชืจื•ืŸ ืกื˜ื ื“ืจื˜ื™ ืžืกื•ื™ื ืœื‘ืขื™ื” ื ืคื•ืฆื” ื‘ืชื›ื ื•ืช. ื“ืคื•ืก ืขื™ืฆื•ื‘ "ืืกื˜ืจื˜ื’ื™ื”" - 1ื‘-JavaRush ืื ื• ืื•ืžืจื™ื ืœืขืชื™ื ืงืจื•ื‘ื•ืช ืฉื ื™ืชืŸ ืœื—ืคืฉ ื‘ื’ื•ื’ืœ ืืช ื”ืชืฉื•ื‘ื” ื›ืžืขื˜ ืœื›ืœ ืฉืืœื”. ืœื›ืŸ, ืžื™ืฉื”ื• ื›ื ืจืื” ื›ื‘ืจ ืคืชืจ ื‘ื”ืฆืœื—ื” ื‘ืขื™ื” ื“ื•ืžื” ืœืฉืœืš. ืื–, ื“ืคื•ืกื™ื ื”ื ืคืชืจื•ื ื•ืช ืฉื ื‘ื“ืงื• ื‘ื–ืžืŸ ื•ื‘ื ื™ืกื•ื™ ืชืจื’ื•ืœ ืœื‘ืขื™ื•ืช ืื• ืฉื™ื˜ื•ืช ื ืคื•ืฆื•ืช ื‘ื™ื•ืชืจ ืœืคืชืจื•ืŸ ืžืฆื‘ื™ ื‘ืขื™ื”. ืืœื• ื”ื ืื•ืชื "ืื•ืคื ื™ื™ื" ืฉื‘ืฉื•ื ืžืงืจื” ืœื ืฆืจื™ืš ืœื”ืžืฆื™ื ื‘ืขืฆืžืš, ืื‘ืœ ืฆืจื™ืš ืœื“ืขืช ืื™ืš ื•ืžืชื™ ืœื™ื™ืฉื ืื•ืชื :) ืžืฉื™ืžื” ื ื•ืกืคืช ืฉืœ ื“ืคื•ืกื™ื ื”ื™ื ืœื”ื‘ื™ื ืืช ื”ืื“ืจื™ื›ืœื•ืช ืœืกื˜ื ื“ืจื˜ ืื—ื“. ืงืจื™ืืช ืงื•ื“ ืฉืœ ืžื™ืฉื”ื• ืื—ืจ ืื™ื ื” ืžืฉื™ืžื” ืงืœื”! ื›ืœ ืื—ื“ ื›ื•ืชื‘ ืืช ื–ื” ืื—ืจืช, ื›ื™ ืืช ืื•ืชื” ื‘ืขื™ื” ืืคืฉืจ ืœืคืชื•ืจ ื‘ื“ืจื›ื™ื ืจื‘ื•ืช. ืื‘ืœ ื”ืฉื™ืžื•ืฉ ื‘ืชื‘ื ื™ื•ืช ืžืืคืฉืจ ืœืžืชื›ื ืชื™ื ืฉื•ื ื™ื ืœื”ื‘ื™ืŸ ืืช ื”ื”ื™ื’ื™ื•ืŸ ืฉืœ ื”ืชื•ื›ื ื™ืช ืžื‘ืœื™ ืœื”ืชืขืžืง ื‘ื›ืœ ืฉื•ืจืช ืงื•ื“ (ื’ื ืื ื”ื ืจื•ืื™ื ืื•ืชื” ื‘ืคืขื ื”ืจืืฉื•ื ื”!) ื”ื™ื•ื ื ืกืชื›ืœ ืขืœ ืื—ืช ื”ืชื‘ื ื™ื•ืช ื”ื ืคื•ืฆื•ืช ื‘ื™ื•ืชืจ ืฉื ืงืจืื•ืช "ืืกื˜ืจื˜ื’ื™ื”". ื“ืคื•ืก ืขื™ืฆื•ื‘ "ืืกื˜ืจื˜ื’ื™ื”" - 2ื‘ื•ืื• ื ื“ืžื™ื™ืŸ ืฉืื ื—ื ื• ื›ื•ืชื‘ื™ื ืชื•ื›ื ื™ืช ืฉืคื•ืขืœืช ื‘ืื•ืคืŸ ืคืขื™ืœ ืขื ืื•ื‘ื™ื™ืงื˜ ื”ืžื›ื•ื ื™ืช. ื‘ืžืงืจื” ื–ื”, ื–ื” ืืคื™ืœื• ืœื ื—ืฉื•ื‘ ื‘ืžื™ื•ื—ื“ ืžื” ื‘ื“ื™ื•ืง ื”ืชื•ื›ื ื™ืช ืฉืœื ื• ืขื•ืฉื”. ืœืฉื ื›ืš, ื™ืฆืจื ื• ืžืขืจื›ืช ื™ืจื•ืฉื” ืขื ื›ื™ืชืช ื”ื•ืจื” ืื—ืช Autoื•ืฉืœื•ืฉ ื›ื™ืชื•ืช ื™ืœื“ื™ื: Sedan, Truckื• F1Car.
public class Auto {

   public void gas() {
       System.out.println("ะ•ะดะตะผ ะฒะฟะตั€ะตะด");
   }

   public void stop() {

       System.out.println("ะขะพั€ะผะพะทะธะผ!");
   }
}

public class Sedan extends Auto {
}

public class Truck extends Auto {
}

public class F1Car extends Auto {
}
ื›ืœ ืฉืœื•ืฉ ื›ื™ืชื•ืช ื”ื™ืœื“ื™ื ื™ื•ืจืฉื•ืช ืฉืชื™ ืฉื™ื˜ื•ืช ืกื˜ื ื“ืจื˜ื™ื•ืช ืžื”ื”ื•ืจื” - gas()ื•ื”ืชื•ื›ื ื™ืช stop() ืฉืœื ื• ืคืฉื•ื˜ื” ืžืื•ื“: ืžื›ื•ื ื™ื•ืช ื™ื›ื•ืœื•ืช ืจืง ืœื ืกื•ืข ืงื“ื™ืžื” ื•ืœื‘ืœื•ื. ื‘ื”ืžืฉืš ืขื‘ื•ื“ืชื ื•, ื”ื—ืœื˜ื ื• ืœื”ื•ืกื™ืฃ ืฉื™ื˜ื” ื—ื“ืฉื” ืœืžื›ื•ื ื™ื•ืช - fill()(ืชื“ืœื•ืง). ื‘ื•ืื• ื ื•ืกื™ืฃ ืืช ื–ื” ืœืžื—ืœืงืช ื”ืื‘ Auto:
public class Auto {

   public void gas() {
       System.out.println("ะ•ะดะตะผ ะฒะฟะตั€ะตะด");
   }

   public void stop() {

       System.out.println("ะขะพั€ะผะพะทะธะผ!");
   }

   public void fill() {
       System.out.println("ะ—ะฐะฟั€ะฐะฒะธั‚ัŒ ะฑะตะฝะทะธะฝ!");
   }
}
ื ืจืื” ืฉืขืœื•ืœื•ืช ืœื”ืชืขื•ืจืจ ื‘ืขื™ื•ืช ื‘ืžืฆื‘ ื›ืœ ื›ืš ืคืฉื•ื˜? ื•ื‘ื›ืŸ, ืœืžืขืฉื”, ื”ื ื›ื‘ืจ ืงืžื•... ื“ืคื•ืก ืขื™ืฆื•ื‘ "ืืกื˜ืจื˜ื’ื™ื”" - 3
public class ChildrenBuggies extends Auto {

   public void fill() {

       //ั…ะผ... ะญั‚ะพ ะดะตั‚ัะบะธะน ะฑะฐะณะณะธ, ะตะณะพ ะฝะต ะฝะฐะดะพ ะทะฐะฟั€ะฐะฒะปัั‚ัŒ :/
   }
}
ื‘ืชื•ื›ื ื™ืช ืฉืœื ื• ื”ื•ืคื™ืขื” ืžื›ื•ื ื™ืช ืฉืœื ืžืชืื™ืžื” ืœืงื•ื ืกืคื˜ ื”ื›ืœืœื™ - ื›ืจื›ืจื” ืœื™ืœื“ื™ื. ื™ื›ื•ืœ ืœื”ื™ื•ืช ืฉื”ื•ื ืžื•ืคืขืœ ื‘ืืžืฆืขื•ืช ื“ื•ื•ืฉื” ืื• ื‘ืฉืœื™ื˜ื” ืจื“ื™ื•, ืื‘ืœ ื“ื‘ืจ ืื—ื“ ื‘ื˜ื•ื— - ืื™ืŸ ืื™ืคื” ืœื”ื›ื ื™ืก ืœืชื•ื›ื• ื‘ื ื–ื™ืŸ. ืกื›ื™ืžืช ื”ื™ืจื•ืฉื” ืฉืœื ื• ื”ื‘ื™ืื” ืœื›ืš ืฉืื ื• ืžื—ืœืงื™ื ืฉื™ื˜ื•ืช ื ืคื•ืฆื•ืช ืืคื™ืœื• ืœืžื—ืœืงื•ืช ืฉืื™ื ืŸ ื–ืงื•ืงื•ืช ืœื”ืŸ. ืžื” ืขืœื™ื ื• ืœืขืฉื•ืช ื‘ืžืฆื‘ ื›ื–ื”? ื•ื‘ื›ืŸ, ืœืžืฉืœ, ืืชื” ื™ื›ื•ืœ ืœืขืงื•ืฃ ืืช ื”ืฉื™ื˜ื” fill()ื‘ื›ื™ืชื” ChildrenBuggiesื›ืš ืฉื›ืืฉืจ ืืชื” ืžื ืกื” ืœืชื“ืœืง ืืช ื”ื‘ืื’ื™, ืฉื•ื ื“ื‘ืจ ืœื ืงื•ืจื”:
public class ChildrenBuggies extends Auto {

   @Override
   public void fill() {
       System.out.println("ะ˜ะณั€ัƒัˆะตั‡ะฝัƒัŽ ะผะฐัˆะธะฝัƒ ะฝะตะปัŒะทั ะทะฐะฟั€ะฐะฒะธั‚ัŒ!");
   }
}
ืื‘ืœ ืคืชืจื•ืŸ ื–ื” ื‘ืงื•ืฉื™ ื™ื›ื•ืœ ืœื”ื™ืงืจื ืžื•ืฆืœื—, ืœืคื—ื•ืช ื‘ื’ืœืœ ืฉื›ืคื•ืœ ืงื•ื“. ืœื“ื•ื’ืžื”, ืจื•ื‘ ื”ืžื—ืœืงื•ืช ื™ืฉืชืžืฉื• ื‘ืฉื™ื˜ื” ืžืžื—ืœืงืช ื”ืื‘, ืืš ืžื—ืœืงื•ืช ืื—ืจื•ืช ื™ื™ืืœืฆื• ืœืขืงื•ืฃ ืื•ืชื”. ืื ื™ืฉ ืœื ื• 15 ืžื—ืœืงื•ืช, ื•ื‘-5-6 ื ืืœืฅ ืœืขืงื•ืฃ ืืช ื”ื”ืชื ื”ื’ื•ืช, ืฉื›ืคื•ืœ ื”ืงื•ื“ ื™ื”ืคื•ืš ื ืจื—ื‘ ืœืžื“ื™. ืื•ืœื™ ืžืžืฉืงื™ื ื™ื›ื•ืœื™ื ืœืขื–ื•ืจ ืœื ื•? ืœื“ื•ื’ืžื”, ื–ื”:
public interface Fillable {

   public void fill();
}
ื ื™ืฆื•ืจ ืžืžืฉืง Fillableื‘ืฉื™ื˜ื” ืื—ืช fill(). ื‘ื”ืชืื ืœื›ืš, ืื•ืชืŸ ืžื›ื•ื ื™ื•ืช ืฉืฆืจื™ืš ืœืชื“ืœืง ื™ื™ืฉืžื• ืžืžืฉืง ื–ื”, ืืš ืžื›ื•ื ื™ื•ืช ืื—ืจื•ืช (ืœืžืฉืœ, ื”ื‘ืื’ื™ ืฉืœื ื•) ืœื. ืื‘ืœ ื’ื ื”ืื•ืคืฆื™ื” ื”ื–ื• ืœื ืชืชืื™ื ืœื ื•. ื”ื”ื™ืจืจื›ื™ื” ื”ืžืขืžื“ื™ืช ืฉืœื ื• ืขืฉื•ื™ื” ืœื’ื“ื•ืœ ืœืžืกืคืจ ื’ื“ื•ืœ ืžืื•ื“ ื‘ืขืชื™ื“ (ืชืืจื• ืœืขืฆืžื›ื ื›ืžื” ืกื•ื’ื™ื ืฉื•ื ื™ื ืฉืœ ืžื›ื•ื ื™ื•ืช ื™ืฉ ื‘ืขื•ืœื). ื ื˜ืฉื ื• ืืช ืืคืฉืจื•ืช ื”ื™ืจื•ืฉื” ื”ืงื•ื“ืžืช ื›ื™ ืœื ืจืฆื™ื ื• ืœืขืงื•ืฃ ืืช ื”- fill(). ื›ืืŸ ื ืฆื˜ืจืš ืœื™ื™ืฉื ืืช ื–ื” ื‘ื›ืœ ืฉื™ืขื•ืจ! ืžื” ืื ื™ืฉ ืœื ื• 50 ืžื”ื? ื•ืื ื™ื‘ื•ืฆืขื• ืฉื™ื ื•ื™ื™ื ืชื›ื•ืคื™ื ื‘ืชื•ื›ื ื™ืช ืฉืœื ื• (ื•ื‘ืชื•ื›ื ื™ื•ืช ืืžื™ืชื™ื•ืช ื–ื” ื›ืžืขื˜ ืชืžื™ื“ ื™ืงืจื”!), ื ืฆื˜ืจืš ืœื”ืชืจื•ืฆืฅ ืขื ื”ืœืฉื•ืŸ ืฉืœื ื• ืžื‘ืœื” ื‘ื™ืŸ ื›ืœ 50 ื”ืฉื™ืขื•ืจื™ื ื•ืœืฉื ื•ืช ืืช ื”ื”ืชื ื”ื’ื•ืช ืฉืœ ื›ืœ ืื—ื“ ืžื”ื ื‘ืื•ืคืŸ ื™ื“ื ื™. ืื– ืžื” ืขืœื™ื ื• ืœืขืฉื•ืช ื‘ืกื•ืคื• ืฉืœ ื“ื‘ืจ? ื›ื“ื™ ืœืคืชื•ืจ ืืช ื”ื‘ืขื™ื” ืฉืœื ื•, ื‘ื•ืื• ื ื‘ื—ืจ ื‘ื“ืจืš ืื—ืจืช. ื›ืœื•ืžืจ, ื‘ื•ืื• ื ืคืจื™ื“ ืืช ื”ืชื ื”ื’ื•ืช ื”ื›ื™ืชื” ืฉืœื ื• ืžื”ื›ื™ืชื” ืขืฆืžื”. ืžื” ื–ื” ืื•ืžืจ? ื›ื™ื“ื•ืข, ืœื›ืœ ืื•ื‘ื™ื™ืงื˜ ื™ืฉ ืžืฆื‘ (ืกื˜ ืฉืœ ื ืชื•ื ื™ื) ื•ื”ืชื ื”ื’ื•ืช (ืกื˜ ืฉืœ ืฉื™ื˜ื•ืช). ื”ื”ืชื ื”ื’ื•ืช ืฉืœ ืžื—ืœืงืช ื”ืžื›ื•ื ื” ืฉืœื ื• ืžื•ืจื›ื‘ืช ืžืฉืœื•ืฉ ืฉื™ื˜ื•ืช - gas(), stop()ื• fill(). ืฉืชื™ ื”ืฉื™ื˜ื•ืช ื”ืจืืฉื•ื ื•ืช ื‘ืกื“ืจ. ืื‘ืœ ื ืขื‘ื™ืจ ืืช ื”ืฉื™ื˜ื” ื”ืฉืœื™ืฉื™ืช ืžื—ื•ืฅ ืœื›ื™ืชื” Auto. ื–ื• ืชื”ื™ื” ื”ืคืจื“ืช ื”ื”ืชื ื”ื’ื•ืช ืžื”ื›ื™ืชื” (ืœื™ืชืจ ื“ื™ื•ืง, ืื ื—ื ื• ืžืคืจื™ื“ื™ื ืจืง ื—ืœืง ืžื”ื”ืชื ื”ื’ื•ืช - ืฉืชื™ ื”ืฉื™ื˜ื•ืช ื”ืจืืฉื•ื ื•ืช ื ืฉืืจื•ืช ื‘ืžืงื•ืžืŸ). ืœืืŸ ืขืœื™ื ื• ืœื”ืขื‘ื™ืจ ืืช ื”ืฉื™ื˜ื” ืฉืœื ื• fill()? ืฉื•ื ื“ื‘ืจ ืœื ืขื•ืœื” ืžื™ื“ ืœืจืืฉ :/ ื ืจืื” ื”ื™ื” ืฉื”ื•ื ืœื’ืžืจื™ ื‘ืžืงื•ืžื•. ื ืขื‘ื™ืจ ืื•ืชื• ืœืžืžืฉืง ื ืคืจื“ - FillStrategy!
public interface FillStrategy {

   public void fill();
}
ืœืžื” ืื ื—ื ื• ืฆืจื™ื›ื™ื ืืช ื”ืžืžืฉืง ื”ื–ื”? ื–ื” ืคืฉื•ื˜. ื›ืขืช ื ื•ื›ืœ ืœื™ืฆื•ืจ ืžืกืคืจ ืžื—ืœืงื•ืช ืฉื™ื˜ืžื™ืขื• ืืช ื”ืžืžืฉืง ื”ื–ื”:
public class HybridFillStrategy implements FillStrategy {

   @Override
   public void fill() {
       System.out.println("ะ—ะฐะฟั€ะฐะฒะปัะตะผ ะฑะตะฝะทะธะฝะพะผ or ัะปะตะบั‚ั€ะธั‡ะตัั‚ะฒะพะผ ะฝะฐ ะฒั‹ะฑะพั€!");
   }
}

public class F1PitstopStrategy implements FillStrategy {

   @Override
   public void fill() {
       System.out.println("ะ—ะฐะฟั€ะฐะฒะปัะตะผ ะฑะตะฝะทะธะฝ ั‚ะพะปัŒะบะพ ะฟะพัะปะต ะฒัะตั… ะพัั‚ะฐะปัŒะฝั‹ั… procedures ะฟะธั‚-ัั‚ะพะฟะฐ!");
   }
}

public class StandartFillStrategy implements FillStrategy {
   @Override
   public void fill() {
       System.out.println("ะŸั€ะพัั‚ะพ ะทะฐะฟั€ะฐะฒะปัะตะผ ะฑะตะฝะทะธะฝ!");
   }
}
ื™ืฆืจื ื• ืฉืœื•ืฉ ืืกื˜ืจื˜ื’ื™ื•ืช ื”ืชื ื”ื’ื•ืช - ืœืžื›ื•ื ื™ื•ืช ืงื•ื ื‘ื ืฆื™ื•ื ืœื™ื•ืช, ืœืžื›ื•ื ื™ื•ืช ื”ื™ื‘ืจื™ื“ื™ื•ืช ื•ืœืžื›ื•ื ื™ื•ืช ืคื•ืจืžื•ืœื” 1. ื›ืœ ืืกื˜ืจื˜ื’ื™ื” ืžื™ื™ืฉืžืช ืืœื’ื•ืจื™ืชื ืชื“ืœื•ืง ื ืคืจื“. ื‘ืžืงืจื” ืฉืœื ื•, ื–ื” ืจืง ืคืœื˜ ืœืงื•ื ืกื•ืœื”, ืื‘ืœ ื™ื›ื•ืœ ืœื”ื™ื•ืช ืฉื™ืฉ ื”ื™ื’ื™ื•ืŸ ืžื•ืจื›ื‘ ื‘ืชื•ืš ื”ืฉื™ื˜ื”. ืžื” ืขืœื™ื ื• ืœืขืฉื•ืช ืขื ื–ื” ื”ืœืื”?
public class Auto {

   FillStrategy fillStrategy;

   public void fill() {
       fillStrategy.fill();
   }

   public void gas() {
       System.out.println("ะ•ะดะตะผ ะฒะฟะตั€ะตะด");
   }

   public void stop() {
       System.out.println("ะขะพั€ะผะพะทะธะผ!");
   }

}
ืื ื• ืžืฉืชืžืฉื™ื ื‘ืžืžืฉืง ืฉืœื ื• FillStrategyื›ืฉื“ื” ื‘ื›ื™ืชื” ื”ืื‘ Auto. ืฉื™ืžื• ืœื‘: ืื ื—ื ื• ืœื ืžืฆื™ื™ื ื™ื ื™ื™ืฉื•ื ืกืคืฆื™ืคื™, ืืœื ืžืฉืชืžืฉื™ื ื‘ืžืžืฉืง. ื•ื ืฆื˜ืจืš ื”ื˜ืžืขื•ืช ืกืคืฆื™ืคื™ื•ืช ืฉืœ ื”ืžืžืฉืง FillStrategyื‘ื›ื™ืชื•ืช ืจื›ื‘ ื™ืœื“ื™ื:
public class F1Car extends Auto {

   public F1Car() {
       this.fillStrategy = new F1PitstopStrategy();
   }
}

public class HybridAuto extends Auto {

   public HybridAuto() {
       this.fillStrategy = new HybridFillStrategy();
   }
}

public class Sedan extends Auto {

   public Sedan() {
       this.fillStrategy = new StandartFillStrategy();
   }
}
ื‘ื•ื ื ืจืื” ืžื” ืงื™ื‘ืœื ื•:
public class Main {

   public static void main(String[] args) {

       Auto sedan = new Sedan();
       Auto hybrid = new HybridAuto();
       Auto f1car = new F1Car();

       sedan.fill();
       hybrid.fill();
       f1car.fill();
   }
}
ืคืœื˜ ืžืกื•ืฃ:

ะŸั€ะพัั‚ะพ ะทะฐะฟั€ะฐะฒะปัะตะผ ะฑะตะฝะทะธะฝ!
ะ—ะฐะฟั€ะฐะฒะปัะตะผ ะฑะตะฝะทะธะฝะพะผ or ัะปะตะบั‚ั€ะธั‡ะตัั‚ะฒะพะผ ะฝะฐ ะฒั‹ะฑะพั€!
ะ—ะฐะฟั€ะฐะฒะปัะตะผ ะฑะตะฝะทะธะฝ ั‚ะพะปัŒะบะพ ะฟะพัะปะต ะฒัะตั… ะพัั‚ะฐะปัŒะฝั‹ั… procedures ะฟะธั‚-ัั‚ะพะฟะฐ!
ืžืขื•ืœื”, ืชื”ืœื™ืš ื”ืชื“ืœื•ืง ืขื•ื‘ื“ ื›ืžื• ืฉืฆืจื™ืš! ืื’ื‘, ืฉื•ื ื“ื‘ืจ ืœื ืžื•ื ืข ืžืื™ืชื ื• ืœื”ืฉืชืžืฉ ื‘ืืกื˜ืจื˜ื’ื™ื” ื›ืคืจืžื˜ืจ ื‘ืงื•ื ืกื˜ืจื•ืงื˜ื•ืจ! ืœื“ื•ื’ืžื”, ื›ืš:
public class Auto {

   private FillStrategy fillStrategy;

   public Auto(FillStrategy fillStrategy) {
       this.fillStrategy = fillStrategy;
   }

   public void fill() {
       this.fillStrategy.fill();
   }

   public void gas() {
       System.out.println("ะ•ะดะตะผ ะฒะฟะตั€ะตะด");
   }

   public void stop() {
       System.out.println("ะขะพั€ะผะพะทะธะผ!");
   }
}

public class Sedan extends Auto {

   public Sedan() {
       super(new StandartFillStrategy());
   }
}



public class HybridAuto extends Auto {

   public HybridAuto() {
       super(new HybridFillStrategy());
   }
}

public class F1Car extends Auto {

   public F1Car() {
       super(new F1PitstopStrategy());
   }
}
ื‘ื•ืื• ื ืจื™ืฅ ืืช ื”ืฉื™ื˜ื” ืฉืœื ื• main()(ื”ื™ื ื ืฉืืจืช ืœืœื ืฉื™ื ื•ื™) ื•ื ืงื‘ืœ ืืช ืื•ืชื” ืชื•ืฆืื”! ืคืœื˜ ืžืกื•ืฃ:

ะŸั€ะพัั‚ะพ ะทะฐะฟั€ะฐะฒะปัะตะผ ะฑะตะฝะทะธะฝ!
ะ—ะฐะฟั€ะฐะฒะปัะตะผ ะฑะตะฝะทะธะฝะพะผ or ัะปะตะบั‚ั€ะธั‡ะตัั‚ะฒะพะผ ะฝะฐ ะฒั‹ะฑะพั€!
ะ—ะฐะฟั€ะฐะฒะปัะตะผ ะฑะตะฝะทะธะฝ ั‚ะพะปัŒะบะพ ะฟะพัะปะต ะฒัะตั… ะพัั‚ะฐะปัŒะฝั‹ั… procedures ะฟะธั‚-ัั‚ะพะฟะฐ!
ื“ืคื•ืก ื”ืืกื˜ืจื˜ื’ื™ื” ืžื’ื“ื™ืจ ืžืฉืคื—ื” ืฉืœ ืืœื’ื•ืจื™ืชืžื™ื, ืžืงืคืœ ื›ืœ ืื—ื“ ืžื”ื ื•ืžื‘ื˜ื™ื— ืฉื”ื ื ื™ืชื ื™ื ืœื”ื—ืœืคื”. ื”ื™ื ืžืืคืฉืจืช ืœืฉื ื•ืช ืืœื’ื•ืจื™ืชืžื™ื ืœืœื ืงืฉืจ ืœืฉื™ืžื•ืฉ ื‘ื”ื ื‘ืฆื“ ื”ืœืงื•ื— (ื”ื’ื“ืจื” ื–ื• ืœืงื•ื—ื” ืžื”ืกืคืจ "ื—ืงื™ืจืช ื“ืคื•ืกื™ ืขื™ืฆื•ื‘" ื•ื ืจืื™ืช ืœื™ ืžื•ืฆืœื—ืช ื‘ื™ื•ืชืจ). ื“ืคื•ืก ืขื™ืฆื•ื‘ "ืืกื˜ืจื˜ื’ื™ื”" - 4ื‘ื•ื“ื“ื ื• ืืช ืžืฉืคื—ืช ื”ืืœื’ื•ืจื™ืชืžื™ื ืฉืžืขื ื™ื™ื ื™ื ืื•ืชื ื• (ืกื•ื’ื™ ืžื›ื•ื ื™ื•ืช ืชื“ืœื•ืง) ืœืžืžืฉืงื™ื ื ืคืจื“ื™ื ืขื ืžืกืคืจ ื™ื™ืฉื•ืžื™ื. ื”ืคืจื“ื ื• ืื•ืชื ืžื”ืžื”ื•ืช ืฉืœ ื”ืžื›ื•ื ื™ืช. ืœื›ืŸ, ื›ืขืช, ืื ื ืฆื˜ืจืš ืœื‘ืฆืข ืฉื™ื ื•ื™ื™ื ื›ืœืฉื”ื ื‘ืชื”ืœื™ืš ื”ืชื“ืœื•ืง ื”ื–ื” ืื• ืื—ืจ, ื–ื” ืœื ื™ืฉืคื™ืข ืขืœ ืกื•ื’ ื”ืžื›ื•ื ื™ื•ืช ืฉืœื ื• ื‘ืฉื•ื ืฆื•ืจื”. ื‘ืืฉืจ ืœื”ื—ืœืคื”, ื›ื“ื™ ืœื”ืฉื™ื’ ืื•ืชื” ืื ื—ื ื• ืจืง ืฆืจื™ื›ื™ื ืœื”ื•ืกื™ืฃ ืฉื™ื˜ืช ืžื’ื“ื™ืจ ืื—ืช ืœื›ื™ืชื” ืฉืœื ื• Auto:
public class Auto {

   FillStrategy fillStrategy;

   public void fill() {
       fillStrategy.fill();
   }

   public void gas() {
       System.out.println("ะ•ะดะตะผ ะฒะฟะตั€ะตะด");
   }

   public void stop() {
       System.out.println("ะขะพั€ะผะพะทะธะผ!");
   }

   public void setFillStrategy(FillStrategy fillStrategy) {
       this.fillStrategy = fillStrategy;
   }
}
ื›ืขืช ืื ื• ื™ื›ื•ืœื™ื ืœืฉื ื•ืช ืืกื˜ืจื˜ื’ื™ื•ืช ืชื•ืš ื›ื“ื™ ืชื ื•ืขื”:
public class Main {

   public static void main(String[] args) {

       ChildrenBuggies buggies = new ChildrenBuggies();
       buggies.setFillStrategy(new StandartFillStrategy());

       buggies.fill();
   }
}
ืื ืคืชืื•ื ืžื›ื•ื ื™ื•ืช ื›ืจื›ืจื•ืช ืœื™ืœื“ื™ื ื™ืชื—ื™ืœื• ืœื”ืชืžืœื ื‘ื‘ื ื–ื™ืŸ, ื”ืชื•ื›ื ื™ืช ืฉืœื ื• ืชื”ื™ื” ืžื•ื›ื ื” ืœืชืจื—ื™ืฉ ื›ื–ื” :) ื–ื” ื”ื›ืœ, ื‘ืขืฆื! ืœืžื“ืช ืขื•ื“ ื“ืคื•ืก ืขื™ืฆื•ื‘ื™, ืฉืœืœื ืกืคืง ืชืฆื˜ืจืš ื•ื™ืขื–ื•ืจ ืœืš ื™ื•ืชืจ ืžืคืขื ืื—ืช ื‘ืขื‘ื•ื“ื” ืขืœ ืคืจื•ื™ืงื˜ื™ื ืืžื™ืชื™ื™ื :) ื ืชืจืื” ืฉื•ื‘!
ื”ืขืจื•ืช
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION