بخش های اصلی

آموزش الگوهای طراحی

Design Pattern - الگوی Template

در الگوی Template ، یک کلاس انتزاعی (abstract)، راه(ها)/نمونه(ها)یی از پیش تعریف شده را برای اجرای متدهایش ارائه میده. زیر کلاس هایش می توانند هر بار که نیاز داشته باشن، پیاده سازیِ متد را بازنویسی (override) کنن ولی فراخوانی باید به همان روشی که توسط کلاس انتزاعی (abstract) از پیش شده، باشه. این الگو زیرگروه الگویِ رفتاری (behavior) محسوب میشه.

پیاده سازی

در این بخش کلاسی انتزاعی (abstract) به نام Game ایجاد می کنیم که توسط مجموعه متدِ template، عملکردهایی را تعریف می کنه که باعث میشه آن متد، final بشه، بنابراین دیگه بازنویسی (overriden) نمیشه. Cricket و Football کلاس های concreteای هستن که Game را توسعه میدن و متدهایش را بازنویسی (override) میکنن.

TemplatePatternDemo، در نسخه ی آزمایشی کلاس مان از Game برای نشان دادن کاربرد الگویِ template استفاده خواهیم کرد.

template pattern uml diagram

مرحله ی 1

ایجاد یک کلاس انتزاعی (abstract) با یک متدِ template final.

Game.java

public abstract class Game {
   abstract void initialize();
   abstract void startPlay();
   abstract void endPlay();

   //template method
   public final void play(){

      //initialize the game
      initialize();

      //start game
      startPlay();

      //end game
      endPlay();
   }
}

مرحله ی 2

ایجاد کلاس های concreteای که کلاس های بالا را توسعه میدن.

Cricket.java

public class Cricket extends Game {

   @Override
   void endPlay() {
      System.out.println("Cricket Game Finished!");
   }

   @Override
   void initialize() {
      System.out.println("Cricket Game Initialized! Start playing.");
   }

   @Override
   void startPlay() {
      System.out.println("Cricket Game Started. Enjoy the game!");
   }
}

Football.java

public class Football extends Game {

   @Override
   void endPlay() {
      System.out.println("Football Game Finished!");
   }

   @Override
   void initialize() {
      System.out.println("Football Game Initialized! Start playing.");
   }

   @Override
   void startPlay() {
      System.out.println("Football Game Started. Enjoy the game!");
   }
}

مرحله ی 3

استفاده از یک متد tamplate به نام play() برای نشان دادن روشی از پیش تعریف شده از بازی.

TemplatePatternDemo.java

public class TemplatePatternDemo {
   public static void main(String[] args) {

      Game game = new Cricket();
      game.play();
      System.out.println();
      game = new Football();
      game.play();		
   }
}

مرحله ی 4

بررسی خروجی

Cricket Game Initialized! Start playing.
Cricket Game Started. Enjoy the game!
Cricket Game Finished!

Football Game Initialized! Start playing.
Football Game Started. Enjoy the game!
Football Game Finished!
در صورتی که سوال و یا نظری دارید، از بخش نظرات با ما در میان بگذارید.

خبـرنــامه

Newsletters

در خبــرنـامه سافت اسکیل عضو شویــد تا جدیدترین هـای سایت را بلافاصله در ایمیل خـود دریافت کنیـد

شما چه نظر و یا سوالی درباره این نوشته دارید؟

مبحث آموزشی

آموزش الگوهای طراحی

Learn Design Patterns

سرفصل ها

پرســیدن سؤال جدید

سؤال های تخصصی خود را از ما بپرسید

دنبال کردن تلگرام کانال سافت اسکیل

https://telegram.me/softskill_ir

عملیات کاربران

خبـرنــامه

Newsletters

در خبــرنـامه سافت اسکیل عضو شویــد تا جدیدترین هـای سایت را بلافاصله در ایمیل خـود دریافت کنیـد