JavaRush /جاوا بلاگ /Random-SD /آرائشي ڊيزائن جي نموني مثالن سان
Sbv239
سطح
Санкт-Петербург

آرائشي ڊيزائن جي نموني مثالن سان

گروپ ۾ شايع ٿيل
آرائشي ڊيزائن جو نمونو اسان کي اجازت ڏئي ٿو ته متحرڪ طور تي هڪ ئي طبقي جي شين جي رويي کي متاثر ڪرڻ کان سواءِ ڪنهن شئي ۾ ڪارڪردگي شامل ڪري. اهو ٿورڙو مونجهارو لڳي ٿو، پر هڪ دفعو توهان ڪوڊ ڏسندا ته سڀ ڪجهه واضح ٿي ويندو. خاصيتون - هڪ سينگار توهان کي اجازت ڏئي ٿو ته ڪنهن موجوده شئي ۾ ڪارڪردگي شامل ڪرڻ جي بغير ان جي ساخت کي تبديل ڪرڻ جي، يعني، اصل ڪلاس تبديل نٿو ڪري - ڊيڪرائيندڙ ڊيزائن جو نمونو هڪ ساخت وارو نمونو آهي جيڪو هڪ موجوده طبقي لاء هڪ ڍڪ فراهم ڪري ٿو - سجاڳي ڪلاس ٺاهيا ويا آهن. اصل ڪلاس کي ويپ ڪريو ۽ اضافي ڪارڪردگي مهيا ڪريو جڏهن ته طريقي جي نشانين کي محفوظ ڪندي اصل ڪلاس جي نشانين کي برقرار رکون ٿا - سجاڳيءَ جي ڊيزائن جو نمونو اڪثر ڪري استعمال ڪيو ويندو آهي SOLID جي واحد ذميواري اصول جي پيروي ڪرڻ لاءِ، ڇو ته اسان اصل طبقي کي اضافي ذميوارين سان لوڊ نه ڪندا آهيون، پر انهن کي ورهائيندا آهيون. سجاڳيءَ جي طبقن ۾ - سجاڳيءَ جو ڍانچو تقريبن زنجير جي زنجير جي زنجير سان ملندڙ جلندڙ آهي (ذميداري جو سلسلو) هيٺين اهم نقطن کي ضرور غور ۾ رکڻ گهرجي - هڪ سجاڳيءَ لاءِ ڪارائتو آهي رن ٽائم دوران ڪنهن شئي جي رويي کي تبديل ڪرڻ جي قابل. هي ڪوڊ برقرار رکڻ ۽ وڌائڻ آسان آهي. - هن نموني جو نقصان اهو آهي ته هڪ ئي قسم جي آرائشي شين جو هڪ وڏو تعداد استعمال ڪيو ويندو آهي - سجاڳي وارو نمونو اڪثر ڪري Java IO ڪلاسز ۾ استعمال ٿيندو آهي (FileReader، BufferedReader، وغيره.) اسان ڇا ڪنداسين - هڪ انٽرفيس ٺاهيو - ڪنڪريٽ ٺاهيو ھن انٽرفيس تي عمل ڪرڻ - ھڪڙو خلاصو ڊيڪرائيندڙ ٺاھيو، ھن انٽرفيس کي لاڳو ڪرڻ - اچو ته ھڪڙو ڪنڪريٽ ڊيڪرائيٽر ٺاھيو جيڪو ھڪڙي خلاصي ڊيڪورٽر کان ورثي ۾ ملي ٿو - انٽرفيس جي ڪنڪريٽ لاڳو ڪرڻ لاءِ "سجائڻ" لاءِ ڪنڪريٽ ڊيڪاريٽر استعمال ڪريو : اسان انٽرفيس جي شڪل ۽ ڪنڪريٽ ڪلاس ٺاھينداسين جيڪي هن انٽرفيس کي لاڳو ڪن ٿا. اڳيون، اسان ٺاھينداسين ھڪڙو خلاصو ڊيڪرائيندڙ ڪلاس، ShapeDecorator، جيڪو شڪل انٽرفيس کي لاڳو ڪري ٿو ۽ ھڪڙي شڪل واري شئي کي ڪلاس فيلڊ جي طور تي رکي ٿو. آرائشي ڊيزائن جو نمونو مثالن سان - 1 - شڪل انٽرفيس جو نالو آھي - مستطيل، مثلث ۽ سرڪل ڪلاس ڪنڪريٽ ڪلاس ھوندا جيڪي شيپ انٽرفيس کي لاڳو ڪن ٿا - ShapeDecorator ھڪڙو خلاصو ڊيڪرائيندڙ ڪلاس آھي جيڪو ساڳي شڪل واري انٽرفيس کي لاڳو ڪري ٿو - RedShapeDecorator ھڪڙو ڪنڪريٽ ڪلاس آھي جيڪو لاڳو ڪري ٿو ShapeDecorator - Demo is هڪ ڊيمو ڪلاس جنهن ۾ اسان استعمال ڪنداسين 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