JavaRush /جاوا بلاگ /Random-UR /پل ڈیزائن پیٹرن

پل ڈیزائن پیٹرن

گروپ میں شائع ہوا۔
ہیلو! ہم ایک وسیع اور بہت مفید موضوع - ڈیزائن پیٹرن کو سمجھتے رہتے ہیں۔ آج ہم پل کے بارے میں بات کریں گے۔ دوسرے نمونوں کی طرح، برج عام مسائل کو حل کرنے کے لیے کام کرتا ہے جن کا سامنا ایک ڈویلپر کو سافٹ ویئر فن تعمیر کو ڈیزائن کرتے وقت ہوتا ہے۔ آئیے آج اس کی خصوصیات کا مطالعہ کرتے ہیں اور اسے استعمال کرنے کا طریقہ جانتے ہیں۔

برج پیٹرن کیا ہے؟

برج پیٹرن ایک ساختی ڈیزائن پیٹرن ہے۔ یعنی اس کا بنیادی کام طبقات اور اشیاء کا مکمل ڈھانچہ بنانا ہے۔ برج ایک یا زیادہ کلاسوں کو الگ الگ درجہ بندی میں الگ کر کے اس مسئلے کو حل کرتا ہے - خلاصہ اور نفاذ ۔ ایک درجہ بندی میں فعالیت میں تبدیلی دوسرے میں تبدیلیوں کی ضرورت نہیں ہے۔ سب کچھ واضح نظر آتا ہے، لیکن درحقیقت یہ تعریف بہت وسیع لگتی ہے اور اس اہم سوال کا جواب نہیں دیتی: "برج پیٹرن کیا ہے؟" میرے خیال میں آپ کے لیے عملی طور پر اس کا پتہ لگانا آسان ہوگا۔ آئیے فوری طور پر برج پیٹرن کے لیے ایک بہترین مثال بنائیں۔ ہمارے پاس ایک تجریدی کلاس ہے Shapeجو عام طور پر ہندسی اعداد و شمار کو بیان کرتی ہے:
  • شکل۔جاوا

    public abstract class Shape {
       public abstract void draw();
    }

    جب ہم مثلث اور مستطیل شکلیں شامل کرنے کا فیصلہ کرتے ہیں، تو ہم کلاس سے وراثت حاصل کریں گے Shape:

  • Rectangle.java:

    public class Rectangle extends Shape {
       @Override
       public void draw() {
           System.out.println("Drawing rectangle");
       }
    }
  • Triangle.java:

    public class Triangle extends Shape {
       @Override
       public void draw() {
           System.out.println("Drawing triangle");
       }
    }
ہر چیز اس وقت تک آسان نظر آتی ہے جب تک ہم "رنگ" کا تصور متعارف نہیں کراتے ہیں۔ یعنی، ہر اعداد و شمار کا اپنا رنگ ہوگا، جس پر طریقہ کار کی فعالیت کا انحصار ہوگا draw()۔ طریقہ کار کے مختلف نفاذ کے لیے draw()، ہمیں رنگ کے مطابق ہر شکل کے لیے ایک کلاس بنانے کی ضرورت ہے۔ اگر تین رنگ ہیں، تو چھ طبقے ہیں : TriangleBlack،،،، اور . چھ کلاسیں اتنی بڑی بات نہیں ہے۔ لیکن! اگر ہمیں ایک نئی شکل یا رنگ شامل کرنے کی ضرورت ہے، تو کلاسوں کی تعداد تیزی سے بڑھے گی۔ اس صورتحال سے کیسے نکلا جائے؟ کسی فیلڈ میں رنگوں کو ذخیرہ کرنا اور کنڈیشنلز کے ذریعے آپشنز آزمانا بہترین حل نہیں ہے۔ ایک اچھا حل ایک الگ انٹرفیس میں رنگ ظاہر کرنا ہے ۔ جلد از جلد کہا: آئیے ایک انٹرفیس بنائیں اور اس کے تین نفاذ - , and : TriangleGreenTriangleRedRectangleBlackRectangleGreenRectangleRedColorBlackColorGreenColorRedColor
  • Color.java:

    public interface Color {
       void fillColor();
    }
  • BlackColor.java:

    public class BlackColor implements Color {
       @Override
       public void fillColor() {
           System.out.println("Filling in black color");
       }
    }
  • GreenColor.java

    public class GreenColor implements Color {
       @Override
       public void fillColor() {
           System.out.println("Filling in green color");
       }
    }
  • ریڈ کلر۔جاوا

    public class RedColor implements Color {
       @Override
       public void fillColor() {
           System.out.println("Filling in red color");
       }
    }

    Colorاب کلاس میں ایک قسم کی فیلڈ شامل کریں Shape- ہمیں کنسٹرکٹر میں اس کی قیمت موصول ہوگی۔

  • Shape.java:

    public abstract class Shape {
       protected Color color;
    
       public Shape(Color color) {
           this.color = color;
       }
    
       public abstract void draw();
    }

    colorہم نفاذ میں متغیر کا استعمال کریں گے Shape۔ اس کا مطلب ہے کہ شکلیں اب انٹرفیس کی فعالیت کو استعمال کرسکتی ہیں Color۔

  • مستطیل.جاوا

    public class Rectangle extends Shape {
    
       public Rectangle(Color color) {
           super(color);
       }
    
       @Override
       public void draw() {
           System.out.println("Drawing rectangle");
           color.fillColor();
       }
    }
یہ لو! اب ہم مختلف رنگوں اور ہندسی اشکال پیدا کر سکتے ہیں حتی کہ لامحدود بھی، ریاضی کی ترقی میں کلاسوں کی تعداد میں اضافہ کر سکتے ہیں۔ فیلڈ Color colorایک پل ہے جو دو الگ الگ طبقاتی درجہ بندیوں کو آپس میں جوڑتا ہے۔

برج ڈیوائس: تجرید اور نفاذ کیا ہے۔

آئیے کلاس ڈایاگرام پر ایک نظر ڈالتے ہیں جو برج پیٹرن کو بیان کرتا ہے: پل ڈیزائن پیٹرن کا تعارف - 2یہاں آپ دو آزاد ڈھانچے دیکھ سکتے ہیں جن میں ایک دوسرے کی فعالیت کو متاثر کیے بغیر ترمیم کی جا سکتی ہے۔ ہمارے معاملے میں یہ ہے:
  • خلاصہ - کلاس Shape؛
  • RefinedAbstraction - کلاسز Triangle, Rectangle;
  • لاگو کرنے والا - انٹرفیس Color؛
  • ConcreteImplementor - کلاسز BlackColor، GreenColorاور RedColor.
کلاس Shapeایک تجرید کی نمائندگی کرتی ہے - مختلف رنگوں میں شکلوں کے رنگنے کو کنٹرول کرنے کا ایک طریقہ کار، جو انٹرفیس پر عمل درآمد کو تفویض کرتا ہے Color۔ کلاسز حقیقی اشیاء Triangleہیں Rectangleجو کلاس کے ذریعہ پیش کردہ میکانزم کو استعمال کرتی ہیں Shape۔ BlackColor، GreenColorاور RedColor- نفاذ برانچ میں مخصوص نفاذات۔ انہیں اکثر پلیٹ فارم کہا جاتا ہے۔

برج پیٹرن کہاں استعمال ہوتا ہے؟

اس پیٹرن کو استعمال کرنے کا ایک بہت بڑا فائدہ یہ ہے کہ آپ دوسری برانچ کی منطق کو توڑے بغیر ایک برانچ میں کلاسز کی فعالیت میں تبدیلیاں کر سکتے ہیں۔ یہ نقطہ نظر پروگرام کی کلاسوں کے جوڑے کو کم کرنے میں بھی مدد کرتا ہے۔ پیٹرن استعمال کرنے کی بنیادی شرط یہ ہے کہ "ہدایات پر عمل کریں": انہیں کہیں بھی نہ لگائیں! دراصل، آئیے یہ معلوم کرتے ہیں کہ آپ کو کن صورتوں میں یقینی طور پر برج استعمال کرنے کی ضرورت ہے:
  1. اگر دو سمتوں (جیومیٹرک شکلیں، رنگ) میں اداروں کی تعداد کو بڑھانا ضروری ہے۔

  2. اگر آپ ایک بڑی کلاس کو تقسیم کرنا چاہتے ہیں جو واحد ذمہ داری کے اصول پر پورا نہیں اترتا ہے تو اسے تنگ پروفائل کی فعالیت کے ساتھ چھوٹی کلاسوں میں تقسیم کرنا ہے۔

  3. اگر پروگرام کے چلنے کے دوران بعض اداروں کے آپریشن کی منطق میں تبدیلی کرنے کی ممکنہ ضرورت ہو۔

  4. اگر ضروری ہو تو، عمل درآمد کو کلاس (لائبریری) کلائنٹس سے چھپائیں۔

ہر بار پیٹرن کا استعمال کرتے وقت، آپ کو یہ یاد رکھنے کی ضرورت ہے کہ یہ کوڈ میں اضافی ہستیوں کا اضافہ کرتا ہے - اسے کسی ایسے پروجیکٹ میں استعمال کرنا مکمل طور پر منطقی نہیں ہے جہاں صرف ایک ہندسی شکل اور ایک یا دو ممکنہ رنگ ہوں۔

پیٹرن کے فوائد اور نقصانات

دوسرے نمونوں کی طرح، پل کے بھی فوائد اور نقصانات ہیں۔ پل کے فوائد:
  1. کوڈ اسکیل ایبلٹی کو بہتر بناتا ہے - آپ پروگرام کے کسی اور حصے میں کچھ ٹوٹنے کے خوف کے بغیر فعالیت شامل کرسکتے ہیں۔
  2. ذیلی طبقات کی تعداد کو کم کرتا ہے - کام کرتا ہے جب دو سمتوں میں اداروں کی تعداد کو بڑھانا ضروری ہو (مثال کے طور پر، شکلوں کی تعداد اور رنگوں کی تعداد)۔
  3. خلاصہ اور عمل درآمد کی دو آزاد شاخوں پر الگ الگ کام کرنا ممکن بناتا ہے - یہ دو مختلف ڈویلپرز ایک دوسرے کے کوڈ کی تفصیلات کو تلاش کیے بغیر کر سکتے ہیں۔
  4. کلاسوں کے جوڑے کو کم کرنا - واحد جگہ جہاں دو کلاسیں منسلک ہیں وہ پل (فیلڈ Color color) ہے۔
پل کے نقصانات:
  1. مخصوص صورتحال اور مجموعی طور پر منصوبے کی ساخت پر منحصر ہے، پروگرام کی پیداواری صلاحیت پر منفی اثر پڑ سکتا ہے (مثال کے طور پر، اگر مزید اشیاء کو شروع کرنے کی ضرورت ہے)۔
  2. کلاسوں کے درمیان نیویگیٹ کرنے کی ضرورت کی وجہ سے کوڈ پڑھنے کی اہلیت کو پیچیدہ بناتا ہے۔

حکمت عملی کے پیٹرن سے فرق

برج پیٹرن اکثر ایک اور ڈیزائن پیٹرن، حکمت عملی کے ساتھ الجھ جاتا ہے۔ وہ دونوں ساخت کا استعمال کرتے ہیں (شکلوں اور رنگوں کی مثال میں ہم نے جمع کا استعمال کیا ہے، لیکن برج پیٹرن بھی ساخت کا استعمال کر سکتا ہے) کام کو دیگر اشیاء کو تفویض کرکے۔ لیکن ان میں فرق ہے، اور یہ بہت بڑا ہے۔ حکمت عملی کا نمونہ ایک طرز عمل ہے: یہ بالکل مختلف مسائل کو حل کرتا ہے۔ حکمت عملی الگورتھم کو قابل تبادلہ ہونے کی اجازت دیتی ہے، جبکہ برج تجرید کو عمل سے الگ کرتا ہے تاکہ مختلف نفاذ کے درمیان انتخاب کی اجازت دی جا سکے۔ یعنی، برج، حکمت عملی کے برعکس، پوری تعمیرات یا درجہ بندی کے ڈھانچے پر لاگو ہوتا ہے۔ برج پیٹرن ایک ڈویلپر کے ہتھیاروں میں ایک اچھا ہتھیار ہوسکتا ہے؛ اہم چیز ان حالات کو تلاش کرنا ہے جہاں اسے استعمال کرنے کے قابل ہو، یا کوئی اور پیٹرن استعمال کریں. اگر آپ ابھی تک دیگر ٹیمپلیٹس سے واقف نہیں ہیں، تو یہ مواد پڑھیں:
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION