JavaRush /جاوا بلاگ /Random-SD /فيڪٽري جو طريقو ۽ خلاصو فيڪٽري جو نمونو

فيڪٽري جو طريقو ۽ خلاصو فيڪٽري جو نمونو

گروپ ۾ شايع ٿيل
ڪتاب ۾ ”سر پهريون. ڊيزائن پيٽرن” انهن نمونن کي هن ريت بيان ڪري ٿو: فئڪٽري ميٿڊ جو نمونو هڪ اعتراض ٺاهڻ لاءِ انٽرفيس جي وضاحت ڪري ٿو، پر ذيلي ڪلاسن کي اجازت ڏئي ٿو ته اهي مثال جي طبقي کي چونڊڻ جي لاءِ. اهڙيء طرح، فيڪٽري جو طريقو انسٽنٽيشن آپريشن کي ذيلي ڪلاسز ڏانهن موڪلي ٿو. خلاصو ڪارخانو نمونو هڪ انٽرفيس مهيا ڪري ٿو خاندانن کي پيدا ڪرڻ لاءِ هڪ ٻئي سان لاڳاپيل يا باضابطه شيون انهن جي ڪنڪريٽ طبقن جي وضاحت ڪرڻ کان سواءِ. اچو ته هن کي وڌيڪ تفصيل سان سمجهڻ جي ڪوشش ڪريون. اچو ته چئو ته توهان انهن ماڻهن بابت هڪ راند لکڻ جو فيصلو ڪيو جيڪي ٿيڻ جو فيصلو ڪن ٿا... (توهان کي هتي اصل ۽ غير معمولي شيء جي ضرورت آهي) فقير. اسان هيٺين سان شروع ڪري سگهون ٿا. 1) هڪ مونڪ ڪلاس ۽ ٻارن جا ڪلاس ٺاهيو (اچو ته پهريون ٺاهيون):
public abstract class Monk {

    public abstract void description();
}
public class OrthodoxMonk extends Monk {
    @Override
    public void description() {
        System.out.println("Я православный монах");
    }
}
2) ۽ يقينا، هڪ خانقاه ڪلاس ٺاهيو، جنهن ۾ توهان لاڳو ڪري سگهو ٿا "خانقاه جي واعدن":
public class Monastery {
    private Monk monk;

    public void createMonk(String typeName) {
        this.monk = switch (typeName) {
            case "ORTODOX" -> new OrthodoxMonk();
            default -> null;
        };
    }

    public Monk getMonk() {
        return monk;
    }
}
خير، اچو ته نتيجو چيڪ ڪريو:
public class Main {
    public static void main(String[] args) {
        Monastery monastery = new Monastery();
        monastery.createMonk("ORTODOX");
        monastery.getMonk().description();
    }
}
Я православный монах
هاڻي جيڪڏهن توهان کي ٺاهڻ جي ضرورت آهي ... هڪ ڪيٿولڪ راهب، توهان کي ڪرڻو پوندو A) هڪ ڪيٿولڪ راهب لاءِ هڪ نئون ڪلاس ٺاهيو:
public class CatholicMonk extends Monk {
    @Override
    public void description() {
        System.out.println("Я католический монах");
    }
}
ب) خانقاه جي طبقي ۾ تبديليون آڻيو:
public class Monastery {
    private Monk monk;

    public void createMonk(String typeName) {
        this.monk = switch (typeName) {
            case "ORTODOX" -> new OrthodoxMonk();
            case "CATHOLIC" -> new CatholicMonk();
            default -> null;
        };
    }

    public Monk getMonk() {
        return monk;
    }
}
۽ پوءِ هر ڀيري نئين قسم جا راهب متعارف ڪرايا ويندا، توهان کي هڪ نئون طبقو ٺاهڻو پوندو ۽ موجوده ۾ ترميم ڪرڻي پوندي. هن معاملي ۾ ڇا ڪري سگهجي ٿو ڪنهن نه ڪنهن طرح اسان جي خانقاه جي طبقي کي تبديلين کان ”انڪپسول“ ڪرڻ لاءِ. توھان ڪوشش ڪري سگھوٿا فيڪٽري جو طريقو نمونو. اهو ڪيئن نظر ايندو A) اچو ته راهب طبقي کي ڇڏي ڏيون جيئن آهي، سواءِ شايد هڪ اينگليڪن راهب کي شامل ڪريو (نه رڳو ڪيٿولڪ ۽ آرٿوڊوڪس عيسائين ۾ به راهبيت آهي):
public abstract class Monk {

    public abstract void description();
}
public class OrthodoxMonk extends Monk {
    @Override
    public void description() {
        System.out.println("Я православный монах");
    }
}
public class CatholicMonk extends Monk {
    @Override
    public void description() {
        System.out.println("Я католический монах");
    }
}
public class AnglicanMonk extends Monk {
    @Override
    public void description() {
        System.out.println("Я англиканский монах");
    }
}
ب) اچو ته خانقاهه جي درجي کي هن ريت تبديل ڪريون (اچو ته ان کي ۽ ان جو طريقو خلاصو بڻايون). هتي اسان صرف فيڪٽري جو طريقو استعمال ڪندا آهيون:
public abstract class Monastery {
    protected abstract Monk createMonk();
}
۽ طريقي سان عمل درآمد سان ٻارن جا ڪلاس ٺاھيو:
public class OrthodoxMonastery extends Monastery {
    @Override
    protected Monk createMonk() {
        return new OrthodoxMonk();
    }
}
public class CatholicMonastery extends Monastery {
    @Override
    protected Monk createMonk() {
        return new CatholicMonk();
    }
}
public class AnglicanMonastery extends Monastery {
    @Override
    protected Monk createMonk() {
        return new AnglicanMonk();
    }
}
ب) اچو ته ڪوڊ چيڪ ڪريو
public class Main {
    public static void main(String[] args) {
        Monastery monastery;

        monastery = new OrthodoxMonastery();
        monastery.createMonk().description();

        monastery = new CatholicMonastery();
        monastery.createMonk().description();

        monastery = new AnglicanMonastery();
        monastery.createMonk().description();
    }
}
Я православный монах
Я католический монах
Я англиканский монах
اهي. جيئن ته اسان هاڻي ڏسون ٿا، ته نئين قسم جي راهب کي شامل ڪرڻ وقت، موجوده طبقن کي تبديل ڪرڻ جي ڪا ضرورت نه هوندي، پر صرف جيڪڏهن ضرورت هجي، نوان شامل ڪريو (مخصوص خانقاه ۽ راهب جو طبقو). شايد ڪنهن اڳ ۾ ئي نوٽ ڪيو هجي ته وضاحت جو طريقو، جيڪو شروع کان ئي منڪ ڪلاس ۾ هو، اهو به فيڪٽري هو :) ڪارخاني جي طريقي جي تعريف ۾ چيو ويو آهي ته اسان جو نمونو ڪنهن شئي کي ٺاهڻ لاءِ انٽرفيس جي وضاحت ڪري ٿو، پر اسان ڪو به ٺاهيو نه آهي. انٽرفيس، جيتوڻيڪ اسان هڪ انٽرفيس جي طور تي Monastery ڪلاس ٺاهي سگهون ٿا ۽ ان کي مخصوص عملن ۾ لاڳو ڪري سگهون ٿا. اهو وسيع معنيٰ ۾ لفظ ”انٽرفيس“ ڏانهن اشارو ڪري ٿو. تعريف ۾ اهو به چيو ويو آهي ته اها ذيلي ڪلاسن کي اجازت ڏئي ٿي ته اهي ڪلاس چونڊيندا مثال جو اهي ٺاهيندا آهن . هتي اسان صرف اهو ڏسون ٿا ته ذيلي ڪلاس (ٻار طبقو) هن طريقي کي لاڳو ڪن ٿا (يعني، اهي اختيار آهن جيڪي مونڪ شيون ٺاهي رهيا آهن). هاڻي اچو ته اسان جي پروگرام کي ٿورو وڌايو، اهو امڪان متعارف ڪرايو ته هڪ يا ٻئي فرقي ۾ مختلف راهب آهن. مثال طور، آرٿوڊوڪس ۾، خانقاهن ۽ خانقاهن تي آرٿوڊوڪس چرچ جي پوزيشن جي بنياد تي (29 نومبر - ڊسمبر 2، 2017 تي روسي آرٿوڊوڪس چرچ جي بشپس جي ڪائونسل ۾ منظور ڪيو ويو)، اسان اهو نتيجو ڪري سگهون ٿا ته 2 قسم جا فقير آهن. :- گھٽ اسڪيما (منٽل). - اسڪيما (عظيم اسڪيما). اتي پڻ "تيار ڪرڻ وارا مرحلا" آهن، پر ماڻهن کي راهب نه سمجهيو ويندو آهي (Trudnik، Novice ۽ Ryasophor or Monk)، ڇاڪاڻ ته اهي خانقاه واعدو نه ڪندا آهن. تنهن ڪري، اسان انهن کي حساب ۾ نه ٿا وٺون. هن معاملي ۾ اسان کي ڇا حاصل ٿئي ٿو: الف) خانقاهه ڪلاس (آسان ڪرڻ لاءِ، اچو ته هن وقت لاءِ آرٿوڊوڪس مونسٽزم تي ڌيان ڏيون) فيڪٽري طريقي سان :
public abstract class Monastery {
    protected abstract Monk createMonk(String type);
}
۽ هڪ مخصوص خانقاه
public class OrthodoxMonastery extends Monastery {

    @Override
    protected Monk createMonk(String type) {
        return new OrthodoxMonk(type);
    }
}
ب) اچو ته فقير طبقي کي درست ڪريون:
public abstract class Monk {
    String kind;

    public Monk(String kind) {
        this.kind = kind;
    }

    public abstract void description();
}
۽ ٻار طبقو:
public class OrthodoxMonk extends Monk {
    public OrthodoxMonk(String kind) {
        super(kind);
    }

    @Override
    public void description() {
        System.out.println("Я православный монах - " + kind);
    }
}
ج) اچو ته اسان جو ڪوڊ چيڪ ڪريو:
public class Main {
    public static void main(String[] args) {
        Monastery monastery = new OrthodoxMonastery();
        monastery.createMonk("Мантийный монах").description();
        monastery.createMonk("Великосхимник").description();
    }
}
Я православный монах - Мантийный монах
Я православный монах — Великосхимник
اهڙيءَ طرح، فيڪٽري ميٿڊ جي نموني کي استعمال ڪندي، اسان اهو حاصل ڪيو ته اسان کي اڳ ۾ لکيل طبقن کي تبديل ڪرڻ جي ضرورت ناهي، پر جڏهن فقيرن جي تصويرن (قسم) کي وڌايو، ڪوڊ ۾ گهٽ ۾ گهٽ تبديلين جي ضرورت آهي. اچو ته چيڪ ڪريو ۽ ڪيٿولڪ فقيرن جي سڀني حڪمن ۽ جماعتن کي شامل ڪريو :) پر اهو بهتر آهي ته 3 سڀ کان وڌيڪ مشهور تي ڌيان ڏيو، ڇاڪاڻ ته انهن مان 100 کان وڌيڪ آهن: 1) بينيڊڪٽائن 2) جيسوٽ 3) فرانسسڪن اهو ڪرڻ لاء، جيئن اڳ ۾. آرٿوڊوڪس راهب، اسان کي ڪيٿولڪ راهب جي هڪ مخصوص طبقي کي لاڳو ڪرڻ جي ضرورت آهي:
public class CatholicMonk extends Monk {
    public CatholicMonk(String kind) {
        super(kind);
    }

    @Override
    public void description() {
        System.out.println("Я католический монах - " + kind);
    }
}
۽ خانقاهه طبقو:
public class CatholicMonastery extends Monastery {

    @Override
    protected Monk createMonk(String type) {
        return new CatholicMonk(type);
    }
}
۽ ڪوڊ چيڪ ڪريو:
public class Main {
    public static void main(String[] args) {
        Monastery monastery;

        monastery = new OrthodoxMonastery();
        monastery.createMonk("Мантийный монах").description();
        monastery.createMonk("Великосхимник").description();

        monastery = new CatholicMonastery();
        monastery.createMonk("Бенедиктинец").description();
        monastery.createMonk("Иезуит").description();
        monastery.createMonk("Францисканец").description();
    }
}
Я православный монах - Мантийный монах
Я православный монах - Великосхимник
Я католический монах - Бенедиктинец
Я католический монах - Иезуит
Я католический монах - Францисканец
اچو ته هن نموني سان ختم ڪريون. انهن سڀني قسمن جا فقير به اڳ ۾ ئي E-num ڪلاس ۾ شامل ڪري سگهجن ٿا، پر ڪوڊ کي آسان ڪرڻ لاءِ اسان ان کان سواءِ ڪنداسين. اهو وقت آهي خلاصو فيڪٽري جي نموني لاء. اسان وٽ فقير آهن، هاڻي اسان انهن کي ڪپڙا، گلاب وغيره ٺاهي سگهون ٿا. اچو ته لباس سان شروع ڪريون، اهو آهي، جيڪڏهن اسان شروعات ۾ اسان جي تعريف ڏانهن واپس وڃون ٿا، لباس هڪ خاندان بڻجي ويندو هڪ ٻئي سان ڳنڍيل يا هڪ ٻئي تي منحصر شين جو . اچو ته ان مسئلي سان شروع ڪريون ته هر قسم جي فقير جا مختلف ڪپڙا آهن. جيڪڏهن اسان ٻڌ ڌرم کي پڻ شامل ڪيو وڃي، پوء اهي مڪمل طور تي مختلف هوندا :) هن کي ڪرڻ لاء، اسان هڪ ڪارخانو انٽرفيس ٺاهي سگهون ٿا، جنهن تي عمل ڪرڻ لاء ضروري ڪپڙا ٺاهي سگهندا. تنهن ڪري A) اسان ڪپڙا ٺاهڻ لاء هڪ ڪارخانو ٺاهيندا آهيون
public interface MonkFactory {
    Clothing createClothing();
}
۽ ان تي عملدرآمد
public class OrthodoxMonkFactory implements MonkFactory {

        @Override
    public Clothing createClothing() {
        return new OrtodoxClothing();
    }
}
public class CatholicMonkFactory implements MonkFactory {

    @Override
    public Clothing createClothing() {
        return new CatholicClothing();
    }
}
public class AnglicanMonkFactory implements MonkFactory {

    @Override
    public Clothing createClothing() {
        return new AnglicanClothing();
    }
}
خير، اچو ته ٻڌ ڌرم جي باري ۾ نه وساريو :)
public class BuddhistMonkFactory implements MonkFactory {

    @Override
    public Clothing createClothing() {
        return new BuddhistClothing();
    }
}
ب) لباس جو ڪلاس ٺاهيو (آسان ڪرڻ لاءِ، اچو ته راهب جي لباس جو اهم عنصر وٺون، اسان تفصيل ۾ نه وينداسين):
public abstract class Clothing {
    private String name;

    public Clothing(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}
۽ ٻارن جا ڪلاس
public class OrtodoxClothing extends Clothing {
    public OrtodoxClothing() {
        super("Мантия");
    }
}
public class CatholicClothing extends Clothing {
    public CatholicClothing() {
        super("Ряса с капюшоном");
    }
}
public class AnglicanClothing extends Clothing {
    public AnglicanClothing() {
        super("Ряса");
    }
}
public class BuddhistClothing extends Clothing {
    public BuddhistClothing() {
        super("Кашая");
    }
}
ج) اڳيون، اسان فقيرن جي طبقن کي تبديل ڪندا آهيون ته جيئن اهي ڪپڙا هجن:
public abstract class Monk {
    String kind;
    Clothing clothing;

    public Monk(String kind) {
        this.kind = kind;
    }

    public void setClothing(Clothing clothing) {
        this.clothing = clothing;
    }

    public abstract void description();
}
public class OrthodoxMonk extends Monk {
    public OrthodoxMonk(String kind) {
        super(kind);
    }

    @Override
    public void description() {
        System.out.println("Я православный монах - " + kind);
        System.out.println("Моя одежда - " + clothing.getName());
    }
}
public class CatholicMonk extends Monk {
    public CatholicMonk(String kind) {
        super(kind);
    }

    @Override
    public void description() {
        System.out.println("Я католический монах - " + kind);
        System.out.println("Моя одежда - " + clothing.getName());
    }
}
public class AnglicanMonk extends Monk {
    public AnglicanMonk(String kind) {
        super(kind);
    }

    @Override
    public void description() {
        System.out.println("Я англиканский монах - " + kind);
        System.out.println("Моя одежда - " + clothing.getName());
    }
}
public class BuddhistMonk extends Monk {
    public BuddhistMonk(String kind) {
        super(kind);
    }

    @Override
    public void description() {
        System.out.println("Я буддийский монах - " + kind);
        System.out.println("Моя одежда - " + clothing.getName());
    }
}
ڊي) خانقاهه طبقي ۾ اسان جي فيڪٽري جو طريقو شامل آهي
public abstract class Monastery {

    public Monk create(MonkFactory monkFactory, String type) {
        Monk monk = createMonk(type);
        monk.setClothing(monkFactory.createClothing());
        return monk;
    }

    protected abstract Monk createMonk(String type);
}
اسان جا عمل تبديل نه ٿيا آهن
public class OrthodoxMonastery extends Monastery {

    @Override
    protected Monk createMonk(String type) {
        return new OrthodoxMonk(type);
    }
}
public class CatholicMonastery extends Monastery {

    @Override
    protected Monk createMonk(String type) {
        return new CatholicMonk(type);
    }
}
public class AnglicanMonastery extends Monastery {

    @Override
    protected Monk createMonk(String type) {
        return new AnglicanMonk(type);
    }
}
public class BuddhistMonastery extends Monastery {

    @Override
    protected Monk createMonk(String type) {
        return new BuddhistMonk(type);
    }
}
ڊي) نتيجو چيڪ ڪريو:
public class Main {
    public static void main(String[] args) {
        Monastery monastery;

        monastery = new OrthodoxMonastery();
        monastery.create(new OrthodoxMonkFactory(), "Мантийный монах").description();

        monastery = new CatholicMonastery();
        monastery.create(new CatholicMonkFactory(), "Иезуит").description();

        monastery = new AnglicanMonastery();
        monastery.create(new AnglicanMonkFactory(), "Бенедиктинец").description();

        monastery = new BuddhistMonastery();
        monastery.create(new BuddhistMonkFactory(), "Монах").description();
    }
}
Я православный монах - Мантийный монах
Моя одежда - Мантия
Я католический монах - Иезуит
Моя одежда - Ряса с капюшоном
Я англиканский монах - Бенедиктинец
Моя одежда - Ряса
Я буддийский монах - Монах
Моя одежда - Кашая
ڪپڙا ٺاهڻ واري ڪارخاني چڱيءَ طرح ڪم ڪرڻ شروع ڪيو آهي. ھاڻي توھان ڪارخاني ۾ شامل ڪري سگھوٿا ڪامياب نماز لاءِ فقيرن لاءِ سامان جي پيداوار (گلابي موتي، وغيره). پر سوال اڃا تائين رهي ٿو، ڇا اهو ممڪن آهي 2 نمونن کي گڏ ڪرڻ لاء؟ يقيناً توهان ڪري سگهو ٿا :) اچو ته ڪوشش ڪريون ته اسان جي پروجيڪٽ جو آخري ورجن ٺاهيو ۽ هڪ هندو راهب کي شامل ڪيو وڃي: الف) فيڪٽريون هاڻي ”اسٽار فيڪٽري“ وانگر راهب جو آواز ٺاهينديون آهن :
public interface MonkFactory {
    Monk createMonk(String type);
    Clothing createClothing();
}
public class OrthodoxMonkFactory implements MonkFactory {

    @Override
    public Monk createMonk(String type){
        return new OrthodoxMonk(type);
    }

    @Override
    public Clothing createClothing() {
        return new OrtodoxClothing();
    }
}
public class CatholicMonkFactory implements MonkFactory {

    @Override
    public Monk createMonk(String type){
        return new CatholicMonk(type);
    }

    @Override
    public Clothing createClothing() {
        return new CatholicClothing();
    }
}
public class AnglicanMonkFactory implements MonkFactory {

    @Override
    public Monk createMonk(String type){
        return new AnglicanMonk(type);
    }

    @Override
    public Clothing createClothing() {
        return new AnglicanClothing();
    }
}
public class BuddhistMonkFactory implements MonkFactory {

    @Override
    public Monk createMonk(String type){
        return new BuddhistMonk(type);
    }

    @Override
    public Clothing createClothing() {
        return new BuddhistClothing();
    }
}
public class HinduMonkFactory implements MonkFactory {

    @Override
    public Monk createMonk(String type){
        return new HinduMonk(type);
    }

    @Override
    public Clothing createClothing() {
        return new HinduClothing();
    }
}
ب) Monastery class + Monastery class جي ڪنڪريٽ لاڳو ڪرڻ جي ضرورت ناهي، اهي ڪارخاني طرفان لاڳو ٿين ٿيون (ان جي برعڪس، اسان انهن کي ڇڏي سگهون ٿا ۽ ڪارخانن کي هٽائي سگهون ٿا، پر اصل ۾ اهي پوءِ صرف ڪارخانن جي بدران، صرف ان ۾ هوندا. ان صورت ۾ خانقاه کي انٽرفيس بنائڻو پوندو، نه ته خلاصو طبقو). ۽ ايپليڪيشن ڪلاس شامل ڪريو:
public class Application {

    public Monk create(MonkFactory monkFactory, String type) {
        Monk monk = monkFactory.createMonk(type);
        monk.prepare(monkFactory);
        return monk;
    }
}
ب) فقيرن تي مشتمل آهي
public abstract class Monk {
    String kind;
    Clothing clothing;

    public Monk(String kind) {
        this.kind = kind;
    }

    public void setClothing(Clothing clothing) {
        this.clothing = clothing;
    }

    public abstract void description();

    public abstract void prepare(MonkFactory monkFactory);
}
لاڳو ڪرڻ ۾ هڪ فيڪٽري جو طريقو شامل آهي، جيڪو فيڪٽري استعمال ڪندي لاڳو ڪيو ويندو آهي:
public class OrthodoxMonk extends Monk {

    public OrthodoxMonk(String kind) {
        super(kind);
    }

    @Override
    public void description() {
        System.out.println("Я православный монах - " + kind);
        System.out.println("Моя одежда - " + clothing.getName());
    }

    @Override
    public void prepare(MonkFactory monkFactory) {
        setClothing(monkFactory.createClothing());
    }
}
public class CatholicMonk extends Monk {
    public CatholicMonk(String kind) {
        super(kind);
    }

    @Override
    public void description() {
        System.out.println("Я католический монах - " + kind);
        System.out.println("Моя одежда - " + clothing.getName());
    }

    @Override
    public void prepare(MonkFactory monkFactory) {
        setClothing(monkFactory.createClothing());
    }
}
public class AnglicanMonk extends Monk {
    public AnglicanMonk(String kind) {
        super(kind);
    }

    @Override
    public void description() {
        System.out.println("Я англиканский монах - " + kind);
        System.out.println("Моя одежда - " + clothing.getName());
    }

    @Override
    public void prepare(MonkFactory monkFactory) {
        setClothing(monkFactory.createClothing());
    }
}
public class BuddhistMonk extends Monk {
    public BuddhistMonk(String kind) {
        super(kind);
    }

    @Override
    public void description() {
        System.out.println("Я буддийский монах - " + kind);
        System.out.println("Моя одежда - " + clothing.getName());
    }

    @Override
    public void prepare(MonkFactory monkFactory) {
        setClothing(monkFactory.createClothing());
    }
}
public class HinduMonk extends Monk {
    public HinduMonk(String kind) {
        super(kind);
    }

    @Override
    public void description() {
        System.out.println("Я индуистский монах - " + kind);
        System.out.println("Моя одежда - " + clothing.getName());
    }

    @Override
    public void prepare(MonkFactory monkFactory) {
        setClothing(monkFactory.createClothing());
    }
}
ڊي) ۽ اچو ته چيڪ ڪريو:
public class Main {
    public static void main(String[] args) {
        Application application = new Application();

        application.create(new OrthodoxMonkFactory(), "Мантийный монах").description();
        application.create(new CatholicMonkFactory(), "Иезуит").description();
        application.create(new AnglicanMonkFactory(), "Бенедиктинец").description();
        application.create(new BuddhistMonkFactory(), "Монах").description();
        application.create(new HinduMonkFactory(), "Саньяси").description();
    }
}
Я православный монах - Мантийный монах
Моя одежда - Мантия
Я католический монах - Иезуит
Моя одежда - Ряса с капюшоном
Я англиканский монах - Бенедиктинец
Моя одежда - Ряса
Я буддийский монах - Монах
Моя одежда - Кашая
Я индуистский монах - Саньяси
Моя одежда - Почти ничего, тепло же :)
آخر ۾، توھان نوٽ ڪري سگھوٿا ته فئڪٽري جو طريقو ھڪڙو خلاصو ڪلاس استعمال ڪيو ھڪڙو غير لاڳو ٿيل طريقي سان جيڪو ذيلي ڪلاسن ۾ لاڳو ڪيو ويو آھي، ۽ خلاصو ڪارخانو ھڪڙو انٽرفيس استعمال ڪيو، جتي عمل درآمد (اسان جي صورت ۾، ھڪڙو فقير ٺاھيو) انھن ڪلاسن ۾ ٿيو جنھن ھن کي لاڳو ڪيو. انٽرفيس.
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION