JavaRush /جاوا بلاگ /Random-UR /مثالوں کے ساتھ ڈیکوریٹر ڈیزائن پیٹرن
Sbv239
سطح
Санкт-Петербург

مثالوں کے ساتھ ڈیکوریٹر ڈیزائن پیٹرن

گروپ میں شائع ہوا۔
ڈیکوریٹر ڈیزائن پیٹرن ہمیں ایک ہی کلاس کی اشیاء کے رویے کو متاثر کیے بغیر کسی چیز میں متحرک طور پر فعالیت شامل کرنے کی اجازت دیتا ہے۔ یہ تھوڑا سا الجھا ہوا لگتا ہے، لیکن ایک بار جب آپ کوڈ دیکھیں گے تو سب کچھ واضح ہو جائے گا۔ خصوصیات - ایک ڈیکوریٹر آپ کو کسی موجودہ چیز میں اس کی ساخت کو تبدیل کیے بغیر فعالیت شامل کرنے کی اجازت دیتا ہے، یعنی اصل کلاس تبدیل نہیں ہوتی ہے - ڈیکوریٹر ڈیزائن پیٹرن ایک ساختی پیٹرن ہے جو موجودہ کلاس کے لیے ریپر فراہم کرتا ہے - ڈیکوریٹر کلاسز بنائے جاتے ہیں اصل کلاس کو لپیٹیں اور اصل کلاس کے طریقہ کار کے دستخطوں کو برقرار رکھتے ہوئے اضافی فعالیت فراہم کریں - ڈیکوریٹر ڈیزائن پیٹرن کو اکثر SOLID کے واحد ذمہ داری کے اصول پر عمل کرنے کے لیے استعمال کیا جاتا ہے، کیونکہ ہم اصل کلاس کو اضافی ذمہ داریوں کے ساتھ لوڈ نہیں کرتے ہیں، لیکن انہیں تقسیم کرتے ہیں۔ ڈیکوریٹر کلاسز میں - ڈیکوریٹر ساختی طور پر زنجیر ذمہ داری کے انداز سے ملتا جلتا ہے (ذمہ داری کا سلسلہ) مندرجہ ذیل اہم نکات کو مدنظر رکھنا ضروری ہے - ایک ڈیکوریٹر رن ٹائم کے دوران کسی چیز کے رویے میں ترمیم کرنے کے قابل ہونے کے لیے مفید ہے۔ اس کوڈ کو برقرار رکھنا اور بڑھانا آسان ہے۔ - اس پیٹرن کا نقصان یہ ہے کہ ایک ہی قسم کی ڈیکوریٹر اشیاء کی ایک بڑی تعداد استعمال کی جاتی ہے - ڈیکوریٹر پیٹرن اکثر جاوا IO کلاسز میں استعمال ہوتا ہے (فائل ریڈر، بفر ریڈر، وغیرہ) ہم کیا کریں گے - ایک انٹرفیس بنائیں - کنکریٹ بنائیں اس انٹرفیس کے نفاذ - ایک تجریدی ڈیکوریٹر بنائیں، اس انٹرفیس کو نافذ کرتے ہوئے - آئیے ایک کنکریٹ ڈیکوریٹر بنائیں جو ایک تجریدی ڈیکوریٹر سے وراثت میں ملتا ہے - انٹرفیس کے ٹھوس نفاذ کو "ڈیکوریٹ" کرنے کے لیے ایک کنکریٹ ڈیکوریٹر کا استعمال کریں: ہم شکل انٹرفیس اور کنکریٹ کلاسز بنائیں گے۔ جو اس انٹرفیس کو نافذ کرتے ہیں۔ اگلا، ہم ایک خلاصہ ڈیکوریٹر کلاس بنائیں گے، ShapeDecorator، جو Shape انٹرفیس کو لاگو کرتا ہے اور کلاس فیلڈ کے طور پر ایک Shape آبجیکٹ رکھتا ہے۔ مثال کے ساتھ ڈیکوریٹر ڈیزائن پیٹرن - 1 - شکل انٹرفیس کا نام ہے - مستطیل، مثلث اور دائرے کی کلاسیں کنکریٹ کلاسز ہوں گی جو شیپ انٹرفیس کو نافذ کرتی ہیں - شیپ ڈیکوریٹر ایک تجریدی ڈیکوریٹر کلاس ہے جو ایک ہی شیپ انٹرفیس کو لاگو کرتی ہے - ریڈ شیپ ڈیکوریٹر ایک کنکریٹ کلاس ہے جو شیپ ڈیکوریٹر کو لاگو کرتی ہے - ڈیمو ہے ایک ڈیمو کلاس جس میں ہم شیپ آبجیکٹ کو سجانے کے لیے RedShapeDecorator کا استعمال کریں گے مرحلہ 1 : شیپ انٹرفیس بنائیں
public interface Shape {
    void draw();
}
مرحلہ 2 : آئیے اس انٹرفیس کے متعدد نفاذ بنائیں۔ نیچے دی گئی مثال میں صرف ایک دائرہ ہو گا، لیکن درحقیقت ہم کچھ اور بنائیں گے: ایک مستطیل اور ایک مثلث۔
public class Circle implements Shape{
    @Override
    public void draw() {
        System.out.println("Я круг!");
    }
}
مرحلہ 3 : ایک تجریدی ڈیکوریٹر بنائیں جو شیپ انٹرفیس کو لاگو کرے۔
public abstract class ShapeDecorator implements Shape {

    protected Shape decoratedShape;

    //Конструктор, принимающий an object Shape
    public ShapeDecorator(Shape decoratedShape) {
        this.decoratedShape = decoratedShape;
    }

    public void draw() {
        decoratedShape.draw();
    }
}
مرحلہ 4 : ایک کنکریٹ ڈیکوریٹر کلاس بنائیں جو خلاصہ کلاس سے وراثت میں ملتی ہے۔
public class RedShapeDecorator extends ShapeDecorator{

    public RedShapeDecorator(Shape decoratedShape) {
        super(decoratedShape);
    }

    @Override
    public void draw() {
        decoratedShape.draw();
        setRedBorder(decoratedShape);
    }

    private void setRedBorder(Shape decoratedShape) {
        System.out.println("Сообщение от RedShapeDecorator. Цвет границы: красный");
    }
}
مرحلہ 5 : ہماری اشیاء کو رنگنے کے لیے RedShapeDecorator کا استعمال کریں۔
public class Demo {
    public static void main(String[] args)
    {
        Shape circle = new Circle();
        Shape redCircle= new RedShapeDecorator(new Circle());
        Shape redRectangle= new RedShapeDecorator(new Rectangle());
        Shape redTriangle = new RedShapeDecorator(new Triangle());

        System.out.println("\nОбычный круг:");
        circle.draw();

        System.out.println("\nКруг с красной границей:");
        redCircle.draw();

        System.out.println("\nПрямоугольник с красной границей:");
        redRectangle.draw();

        System.out.println("\nТреугольник с красной границей:");
        redTriangle.draw();
    }
}
مرحلہ 6 : کنسول کو دیکھیں اور خوش ہوں۔
Обычный круг:
Я круг!

Круг с красной границей:
Я круг!
Сообщение от RedShapeDecorator. Цвет границы: красный

Прямоугольник с красной границей:
Я прямоугольник!
Сообщение от RedShapeDecorator. Цвет границы: красный

Треугольник с красной границей:
Я треугольник!
Сообщение от RedShapeDecorator. Цвет границы: красный
مثال کے طور پر ڈیکوریٹر ڈیزائن پیٹرن کا جائزہ لینے کے بعد، ہم اس نتیجے پر پہنچ سکتے ہیں کہ اس کا استعمال درج ذیل صورتوں میں جائز ہے: - جب ہم کسی چیز کے رویے یا حالت کو شامل کرنا، بہتر کرنا یا ممکنہ طور پر ہٹانا چاہتے ہیں - جب ہم صرف فعالیت کو تبدیل کرنا چاہتے ہیں۔ کلاس کی ایک مخصوص چیز کا اور باقی کو کوئی تبدیلی نہ چھوڑیں شکریہ! پراجیکٹ فائلوں کے ساتھ ذخیرہ سائٹ geeksforgeeks.org کے ایک مضمون کی بنیاد پر ایک ابتدائی جاوا دیو کے لیے میرا بلاگ
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION