Skip to main content

Abstract Factory

Updated 3 min readMarkdown
Part of seriesDesign Pattern
Abstract Factory

Abstract Factory Design Pattern কী?

Abstract Factory হলো একটি Creational Design Pattern, যা concrete class-এর নাম সরাসরি উল্লেখ না করে সম্পর্কিত বা পরস্পরনির্ভর object-এর একটি family তৈরি করার interface প্রদান করে।

ধরো, একটি application-এ Dark ও Light—দুই ধরনের UI theme রয়েছে। Dark theme ব্যবহার করলে Button, TextBox এবং অন্যান্য UI component-ও Dark theme-এর সঙ্গে সামঞ্জস্যপূর্ণ হতে হবে। একইভাবে Light theme-এর ক্ষেত্রে সব component Light theme অনুসরণ করবে।

প্রতিটি component আলাদাভাবে তৈরি করলে ভুল করে ভিন্ন theme-এর component একসঙ্গে ব্যবহার করার সম্ভাবনা থাকে। Abstract Factory ব্যবহার করে একটি নির্দিষ্ট theme-এর জন্য প্রয়োজনীয় component-গুলো একই factory থেকে তৈরি করা যায়।

এই pattern-এর মূল উদ্দেশ্য শুধু object তৈরির কাজ আলাদা করা নয়; বরং সম্পর্কিত object-গুলোর creation-কে একটি সাধারণ abstraction-এর অধীনে আনা, যাতে client code concrete implementation-এর ওপর সরাসরি নির্ভর না করে।

তবে তার আগে আমাদেরকে Factory Method Design Pattern সম্পর্কে জানতে হবে।

আরেকবার রিক্যাপ করি ঃ Factory Method Design Pattern এ প্রতিটি কনক্রিট ক্লাসের জন্য আলাদা ফ্যাক্টরি ক্লাস থাকে।

Example : 

Button Interface যেখানে বাটন তৈরি করার জন্য render method declare করা হয়েছে। \

public interface Button {

    public void render();

}

\

TextBox Interface যেখানে TextBox তৈরি করার জন্য render method declare করা হয়েছে। 

public interface TextBox {

    public void render();

}

LightButton Class যেখানে Light Button তৈরি করার জন্য প্রয়োজনীয় লজিক ইম্প্লিমেন্ট করতে হবে। 

public class LightButton implements Button {

    @Override

    public void render(){

       System.out.println("This is a Light Button");

    }

}

DarkButton Class যেখানে Dark Button তৈরি করার জন্য প্রয়োজনীয় লজিক ইম্প্লিমেন্ট করতে হবে। 

\

public class DarkButton implements Button {

    @Override

    public void render(){

       System.out.println("This is a DarkButton");

    }

}

**
**

LightTextBox Class যেখানে Light TextBox তৈরি করার জন্য প্রয়োজনীয় লজিক ইম্প্লিমেন্ট করতে হবে। 

public class LightTextBox implements TextBox{

    @Override

    public void render(){

       System.out.println("This is a Light TextBox");

    }

}

**
**

DarkTextBox Class যেখানে Dark TextBox তৈরি করার জন্য প্রয়োজনীয় লজিক ইম্প্লিমেন্ট করতে হবে। 

public class DarkTextBox implements TextBox{

    @Override

    public void render(){

       System.out.println("This is a DarkTextBox");

    }

}

**
**

**
**

GUIFactory যেখানে UI এর প্রয়োজনীয় কম্পনেন্ট পাস করার জন্য মেথড ডেক্লেয়ার করা হয়েছে। 

**
**

public interface GUIFactory {

    public Button createButton();

    public TextBox createTextBox();

}

**
**

LightGUI Class যেখানে Light UI এর প্রয়োজনীয় কম্পনেন্ট return করা হয়েছে। 

\

public class LightGUI implements GUIFactory {

    @Override

    public Button createButton() {

        return new LightButton();

    }

    @Override

    public TextBox createTextBox() {

        return new LightTextBox();

    }

}

**
**

DarkGUI Class যেখানে Dark UI এর প্রয়োজনীয় কম্পনেন্ট return করা হয়েছে। 

public class DarkGUI implements GUIFactory {

    @Override

    public Button createButton() {

        return new DarkButton();

    }


    @Override

    public TextBox createTextBox() {

        return new DarkTextBox();

    }

}

**
**

public class Main {

**
**

    public static void main(String[] args) {

**
**

        //LightGUI তৈরি করা হয়েছে। 

\

        GUIFactory lightGUI = new LightGUI();

**
**

        //lightGUI object থেকে createButton() method কল করে Light Button তৈরি করা হয়েছে।  

**
**

        **Button lightButton = lightGUI.**createButton();   

        //This is a Light Button

\

        //lightGUI object থেকে createTextBox() method কল করে Light TextBox তৈরি করা হয়েছে।  

\

        TextBox lightTextBox = lightGUI.createTextBox();   

         //This is a Light TextBox

    }

**
**

}

public class Main {


    public static void main(String[] args) {

        //LightGUI তৈরি করা হয়েছে। 

        GUIFactory lightGUI = new LightGUI();

        //lightGUI object থেকে createButton() method কল করে Light Button তৈরি করা হয়েছে।  

        Button lightButton = lightGUI.createButton();   

      
        //This is a Light Button


        //lightGUI object থেকে createTextBox() method কল করে Light TextBox তৈরি করা হয়েছে।  


        TextBox lightTextBox = lightGUI.createTextBox();   
       
         //This is a Light TextBox

    }


}

No comments yet. Be the first to comment.

More from this blog