মুখের নকশা প্যাটার্ন কি?


191

অন্য শ্রেণীর অনেকগুলি রয়েছে এমন কোন শ্রেণীর মুখোমুখি কি ?

এটিকে ডিজাইনের ধরণ কী করে? আমার কাছে এটি সাধারণ শ্রেণির মতো।

আপনি কি আমাকে এই ফেকাস প্যাটার্নটি ব্যাখ্যা করতে পারেন ?


7
প্রতিটি ডিজাইনের প্যাটার্ন তার বাস্তবায়নে ক্লাসগুলির একগুচ্ছ হয়।
ফেলিক্স ক্লিং

1
ফাডে প্যাটার্ন এক শ্রেণিতে একাধিক ইন্টারফেস লুকিয়ে ইন্টারফেসটি ব্যবহার করা সহজ করে। এই নিবন্ধটিতে আরও বিশদ রয়েছে
ব্যবহারকারী3199690

এই পোস্টে ভালভাবে ব্যাখ্যা করা হয়েছে প্রোগ্রামারজডজোজো
জাভা

এটি থামিয়ে দিতে হয়েছিল কারণ এটি "গবেষণার প্রচেষ্টা দেখায় না"
রায় ট্রুইলভ

1
@ রয় ট্রুয়েলভ, আপনি যা চান তা করুন। প্রশ্নের পক্ষে সহায়ক উত্তর থাকলে ততক্ষণ চিন্তা করে না। প্রশ্নের কোনও সহায়ক উত্তর?
কেভিন

উত্তর:


190

একটি ডিজাইনের প্যাটার্ন হ'ল একটি পুনরাবৃত্তি সমস্যা সমাধানের একটি সাধারণ উপায়। সমস্ত ডিজাইনের ধরণগুলিতে ক্লাসগুলি কেবলমাত্র সাধারণ ক্লাস। কী গুরুত্বপূর্ণ তা হ'ল তারা কীভাবে কাঠামোগত হয় এবং প্রদত্ত সমস্যা সমাধানের জন্য তারা কীভাবে একসাথে কাজ করে the

ছদ্মরূপ নকশা প্যাটার্ন একটি জটিল সিস্টেমের ইন্টারফেস সরলীকৃত; কারণ এটি সাধারণত সমস্ত শ্রেণীর সমন্বয়ে গঠিত যা জটিল সিস্টেমের উপ-সিস্টেমগুলি তৈরি করে।

একটি ছদ্মরূপ সিস্টেম জটিল বিবরণ থেকে ব্যবহারকারীর ঢাল ও তাদের প্রদান করে simplified viewতা যা easy to use। এটি decouplesসেই কোড যা সাবসিস্টেমগুলির বিবরণ থেকে সিস্টেমটি ব্যবহার করে, পরবর্তী সময়ে সিস্টেমটি সংশোধন করা আরও সহজ করে তোলে।

http://www.dofactory.com/Patterns/PatternFacade.aspx

http://www.blackwasp.co.uk/Facade.aspx

এছাড়াও, ডিজাইনের ধরণগুলি শেখার সময় গুরুত্বপূর্ণ বিষয়টি হ'ল কোন ধরণটি আপনার প্রদত্ত সমস্যার সাথে খাপ খায় এবং তা পরে এটি যথাযথভাবে ব্যবহার করে recognize কোনও প্যাটার্নের অপব্যবহার করা বা এটি যে কোনও সমস্যা হিসাবে এটি ফিট করার চেষ্টা করা খুব সাধারণ বিষয় কারণ আপনি এটি জানেন। ডিজাইনের ধরণগুলি ব্যবহার করে শেখার সময় সেই সমস্যাগুলি সম্পর্কে সচেতন হন।


9
@ কেভিন: এগুলি কখন ব্যবহার করবেন তা জানা সবচেয়ে কঠিন অংশ। তত্ত্ব অনুসারে, নিদর্শনগুলি সহজ হতে পারে তবে ইমো সেগুলি অনুশীলনে কঠিন in আপনি কেবল এটি অভিজ্ঞতা হতে শিখতে পারবেন, যেমন। কোডিং, কোডিং, কোডিং।
ফেলিক্স ক্লিং

ফেকাড ডিজাইনের ধরণটি বিশদ শ্রেণীর প্রয়োগকে গোপন করার জন্য এবং জনসাধারণকে এপিআই নিরাপদে সরবরাহের জন্যও ব্যবহৃত হয়
ইবুউ

29
qu জ্যুচুরিতে মুখোমুখি নকশার প্যাটার্নের সহজ উদাহরণ যা সহজ ইন্টারফেস সরবরাহ করে এবং সমস্ত জটিলতা আড়াল করে
অজয় বেনিওয়াল

কারও কারও কাছে বাস্তব বিশ্বের উদাহরণ সহ একটি নকশার নকশার নকশার সন্ধান করা। আমি এই সংক্ষিপ্ত ইউটিউব টিউটোরিয়াল জুড়ে এসেছি। আশা করি এর কার্যকর youtu.be/dLjJo2v2re8
সংকর গণেশ

অ্যাপ্লিকেশন বড় হওয়ার সাথে সাথে আমরা কি একক সিস্টেমে একাধিক ফ্যাসিড স্তর রাখতে পারি?
জিভা জেএসবি

99

উইকিপিডিয়াতে ফেকাড প্যাটার্নের দুর্দান্ত উদাহরণ রয়েছে।

/* Complex parts */

class CPU {
    public void freeze() { ... }
    public void jump(long position) { ... }
    public void execute() { ... }
}

class Memory {
    public void load(long position, byte[] data) { ... }
}

class HardDrive {
    public byte[] read(long lba, int size) { ... }
}

/* Facade */

class ComputerFacade {
    private CPU processor;
    private Memory ram;
    private HardDrive hd;

    public ComputerFacade() {
        this.processor = new CPU();
        this.ram = new Memory();
        this.hd = new HardDrive();
    }

    public void start() {
        processor.freeze();
        ram.load(BOOT_ADDRESS, hd.read(BOOT_SECTOR, SECTOR_SIZE));
        processor.jump(BOOT_ADDRESS);
        processor.execute();
    }
}

/* Client */

class You {
    public static void main(String[] args) {
        ComputerFacade computer = new ComputerFacade();
        computer.start();
    }
}

6
এটি একটি ভাল উদাহরণ। কোনও ক্লায়েন্টকে যদি খুব পছন্দ করে তবে একটি মুখের সমস্ত ধাপ একসাথে টুকরো টুকরো করতে সক্ষম হওয়া দরকার, ব্যক্তিগত পদ্ধতি দ্বারা কোনও কিছুই আড়াল করা উচিত নয়।
রব

2
ইমো এটির কোনও ভাল উদাহরণ নয় কারণ এটি ব্যবহারের ক্ষেত্রে জোর দেয় না। উদাহরণ কেবল দেখায়, যেমন বলা হয়েছে, একটি নিয়মিত ক্লাস। হার্ডওয়্যার সংযুক্তি একটি রচনা। উইকিতে উদাহরণের জন্য ওভারকিল হতে পারে তবে সাবমডিয়ুলগুলি তাত্ক্ষণিক না করে নির্ভরতা ইনজেকশন ব্যবহারের উদ্দেশ্যকে জোর দেওয়া এবং সম্ভবত টিও এর বিভ্রান্তি এড়াতে পারে।
ম্যানুয়েলস্কিনিড

এটি একটি আশ্চর্যজনক উদাহরণ, কারণ এটি ধারণাটি বোঝার জন্য কেবল সংক্ষেপে কয়েক হাজার শব্দকে আবৃত করে। বিশ্রামটি কেবল যে কোনও পরিস্থিতিতে থাকতে পারে তার চারপাশের বিশদগুলি (অবশ্যই কোনও ডিজাইনের ধরণটি প্রতিটি দৃশ্যকে কখনই কভার করতে পারে না)।
সৈয়দ

41

পূর্ববর্তী উত্তরে বর্ণিত হিসাবে এটি গ্রাহক ক্লায়েন্টকে একটি সহজ ইন্টারফেস সরবরাহ করে। উদাহরণস্বরূপ: "ESPN দেখুন" হ'ল উদ্দেশ্যযুক্ত ফাংশন। তবে এর মধ্যে কয়েকটি পদক্ষেপ জড়িত:

  1. প্রয়োজনে টিভি অন করুন;
  2. স্যাটেলাইট / তারের কার্যকারিতা পরীক্ষা করুন;
  3. প্রয়োজনে ESPN এ স্যুইচ করুন।

তবে সম্মুখভাগ এটি সহজতর করবে এবং ক্লায়েন্টকে কেবল "ওয়াচ ইএসপিএন" ফাংশন সরবরাহ করবে।


29

ফেকাড সিস্টেমের জটিলতাগুলি গোপন করে এবং ক্লায়েন্টকে একটি ইন্টারফেস সরবরাহ করে যেখানে ক্লায়েন্ট সিস্টেমটি অ্যাক্সেস করতে পারে।

public class Inventory {
public String checkInventory(String OrderId) {
    return "Inventory checked";
}
}

public class Payment {
public String deductPayment(String orderID) {
    return "Payment deducted successfully";
}
}


public class OrderFacade {
private Payment pymt = new Payment();
private Inventory inventry = new Inventory();

public void placeOrder(String orderId) {
    String step1 = inventry.checkInventory(orderId);
    String step2 = pymt.deductPayment(orderId);
    System.out
            .println("Following steps completed:" + step1
                    + " & " + step2);
   }
}

public class Client {
       public static void main(String args[]){
         OrderFacade orderFacade = new OrderFacade();
         orderFacade.placeOrder("OR123456");
         System.out.println("Order processing completed");
       }
  }

উপ-সিস্টেমগুলি একে অপরের সাথে যোগাযোগের অনুমতি না দিয়েই চলে OrderFacade? আপনার উদাহরণে, মধ্যে Paymentএবং Inventory?
ইসুরু

19

একটি সংক্ষিপ্ত এবং সহজ ব্যাখ্যা:

  • ফ্যাসাদ প্যাটার্ন একটি সাবসিস্টেমের ইন্টারফেস (গুলি) এর সেটকে একীভূত ইন্টারফেস সরবরাহ করে।
  • ফেকাড একটি উচ্চ-স্তরের ইন্টারফেস সংজ্ঞায়িত করে যা সাবসিস্টেমটি ব্যবহার করা সহজ করে তোলে।


ফাউডের সাথে এবং ছাড়াও পরিস্থিতিটি বোঝার চেষ্টা করুন: আপনি যদি অ্যাকাউন্টটি আউটআউট 1 থেকে অ্যাকাউন্ট 2 এ স্থানান্তর করতে চান তবে দুটি সাবসিস্টিমে আবেদন করা হবে, অ্যাকাউন্ট 1 থেকে প্রত্যাহার এবং অ্যাকাউন্ট 2 এ জমা দিন deposit

এবং সম্মুখ সম্মুখ ছাড়া


সহজ এবং স্পষ্ট ব্যাখ্যা এবং উদাহরণ, ধন্যবাদ! আপনি কি সাবসিস্টেম সংজ্ঞায়িত করতে পারেন তা ব্যাখ্যা করতে পারেন? সাবসিস্টেমটি তুলনামূলকভাবে সম্পর্কিত না হওয়া সাবক্লাস / ফাংশন সমন্বিত থাকতে পারে, আপনার সংজ্ঞা প্রায় কোনও শ্রেণীর জন্য প্রযোজ্য। সাবসিস্টেমের ক্লাসগুলি কি খুব কড়া সম্পর্কিত হওয়া উচিত, উদাহরণস্বরূপ একটি মডিউল বা একটি লাইব্রেরি গঠন করুন, যেটি মুখোমুখিটিকে মুখোমুখি বলতে পারে?
বেনি

@ বেন্নি হ্যাঁ, সাবসিস্টেম (এটি একটি শ্রেণি হবে) তুলনামূলকভাবে সম্পর্কযুক্ত ফাংশন সমন্বিত করতে পারে তবে ফ্যাসাদ একটি শ্রেণি যেখানে আপনি সিদ্ধান্ত নেন যে কোন নির্দিষ্ট ফাংশনগুলি কল করতে হবে। আপনি একটি "ট্যুর প্যাকেজ" বুক করতে চান, আপনি হোটেল, ক্যাব, ফ্লাইটটি এক জায়গায় / ফর্ম নির্বাচন করুন তারপরে অভ্যন্তরীণভাবে ফ্যাসাদটি বিভিন্ন উপযুক্ত শ্রেণির ফাংশনগুলি অনুরোধ করে এবং আপনাকে একটি চূড়ান্ত ফলাফল ফিরিয়ে দেয়। তাই না?
অরুণ রাজ

10

একটি মুখোশটিকে এমন শ্রেণি হিসাবে বর্ণনা করা উচিত নয় যা প্রচুর পরিমাণে অন্যান্য ক্লাস ধারণ করে। এটি প্রকৃতপক্ষে এই শ্রেণীর ইন্টারফেস এবং ক্লাসগুলির ব্যবহার আরও সহজ করা উচিত অন্যথায় মুখোমুখি শ্রেণি অকেজো।


7

আপনার প্রশ্নগুলি সম্পর্কিত:

একটি ক্লাসের মুখোমুখি কি অন্যান্য ক্লাস অনেক রয়েছে?

হ্যাঁ. এটি প্রয়োগে অনেক উপ-সিস্টেমের জন্য একটি মোড়ক।

এটিকে ডিজাইনের ধরণ কী করে? আমার কাছে এটি সাধারণ শ্রেণির মতো

সমস্ত নকশা নিদর্শন খুব সাধারণ ক্লাস। @ উম্মেশ কনডোলিকার এই প্রশ্নের উত্তর যথাযথভাবে দিয়েছেন।

আপনি কি আমাকে এই ফেকাদ সম্পর্কে ব্যাখ্যা করতে পারেন, আমি নকশাগুলির নকশায় নতুন।

GoF মতে, ছদ্মরূপ নকশা প্যাটার্ন হিসাবে defind হয়:

একটি সাবসিস্টেমের ইন্টারফেসের সেটকে একটি ইউনিফাইড ইন্টারফেস সরবরাহ করুন। ফ্যাসাদ প্যাটার্ন একটি উচ্চ-স্তরের ইন্টারফেস সংজ্ঞা দেয় যা সাবসিস্টেমটি ব্যবহার করা সহজ করে তোলে easier

ছদ্মরূপ প্যাটার্ন সাধারণত যখন ব্যবহার করা হয়:

  1. একটি জটিল সিস্টেম অ্যাক্সেস করার জন্য একটি সাধারণ ইন্টারফেস প্রয়োজন।
  2. সাবসিস্টেমের বিমূর্ততা এবং প্রয়োগগুলি দৃly়ভাবে একত্রিত।
  3. স্তরযুক্ত সফ্টওয়্যার প্রতিটি স্তরে একটি এন্ট্রি পয়েন্ট প্রয়োজন।
  4. সিস্টেমটি খুব জটিল বা বুঝতে অসুবিধাজনক।

আসুন ক্লিয়ার্ট্রিপ ওয়েবসাইটের একটি আসল শব্দের উদাহরণ গ্রহণ করি

এই ওয়েবসাইটটি বুক করার বিকল্প সরবরাহ করে

  1. উড়ান
  2. হোটেল
  3. ফ্লাইট + হোটেল

টুকিটাকি সংকেতলিপি:

import java.util.*;

public class TravelFacade{
    FlightBooking flightBooking;
    TrainBooking trainBooking;
    HotelBooking hotelBooking;

    enum BookingType {
        Flight,Train,Hotel,Flight_And_Hotel,Train_And_Hotel;
    }; 

    public TravelFacade(){
        flightBooking = new FlightBooking();
        trainBooking = new TrainBooking();
        hotelBooking = new HotelBooking();        
    }
    public void book(BookingType type, BookingInfo info){
        switch(type){
            case Flight:
                // book flight;
                flightBooking.bookFlight(info);
                return;
            case Hotel:
                // book hotel;
                hotelBooking.bookHotel(info);
                return;
            case Train:
                // book Train;
                trainBooking.bookTrain(info);
                return;
            case Flight_And_Hotel:
                // book Flight and Hotel
                flightBooking.bookFlight(info);
                hotelBooking.bookHotel(info);
                return;
             case Train_And_Hotel:
                // book Train and Hotel
                trainBooking.bookTrain(info);
                hotelBooking.bookHotel(info);
                return;                
        }
    }
}
class BookingInfo{
    String source;
    String destination;
    Date    fromDate;
    Date     toDate;
    List<PersonInfo> list;
}
class PersonInfo{
    String name;
    int       age;
    Address address;
}
class Address{

}
class FlightBooking{
    public FlightBooking(){

    }
    public void bookFlight(BookingInfo info){

    }
}
class HotelBooking{
    public HotelBooking(){

    }
    public void bookHotel(BookingInfo info){

    }
}
class TrainBooking{
    public TrainBooking(){

    }
    public void bookTrain(BookingInfo info){

    }
}

ব্যাখ্যা:

  1. FlightBooking, TrainBooking and HotelBooking বৃহত সিস্টেমের বিভিন্ন উপ-সিস্টেম: TravelFacade

  2. TravelFacade নীচের বিকল্পগুলির মধ্যে একটি বুক করার জন্য একটি সহজ ইন্টারফেস অফার করে

    Flight Booking
    Train Booking 
    Hotel Booking
    Flight + Hotel booking 
    Train + Hotel booking
    
  3. ট্র্যাভেলফ্যাকডের বই এপিআই অভ্যন্তরীণভাবে সাব-সিস্টেমের এপিআইয়ের নীচে কল করে

    flightBooking.bookFlight
    trainBooking.bookTrain(info);
    hotelBooking.bookHotel(info);
    
  4. এই উপায়ে, TravelFacadeউপ-সিস্টেমের এপিআই প্রকাশের সাথে সহজ এবং সহজ এপিআই সরবরাহ করে।

মূল গ্রহণযোগ্যতা: ( পঙ্কজ কুমারের জার্নালদেব নিবন্ধ থেকে )

  1. মুখোমুখি প্যাটার্ন ক্লায়েন্ট অ্যাপ্লিকেশনগুলির জন্য সহায়ক হিসাবে আরও বেশি
  2. সম্মুখের প্যাটার্নটি বিকাশের যে কোনও সময়ে প্রয়োগ করা যেতে পারে, সাধারণত যখন ইন্টারফেসের সংখ্যা বৃদ্ধি পায় এবং সিস্টেম সম্পূর্ণ এক্স হয়
  3. সাবসিস্টেম ইন্টারফেসগুলি ফেকাড সম্পর্কে সচেতন নয় এবং তাদের ফেকাড ইন্টারফেসের কোনও উল্লেখ থাকতে হবে না
  4. অনুরূপ ধরণের ইন্টারফেসের জন্য মুখের প্যাটার্ন প্রয়োগ করা উচিত , এর উদ্দেশ্য একই ধরণের কাজগুলি করে এমন একাধিক ইন্টারফেসের চেয়ে একটি একক ইন্টারফেস সরবরাহ করা jobs

আরও ভাল বোঝার জন্য উত্স তৈরির নিবন্ধটি একবার দেখুন ।


6

ফ্যাকাস প্যাটার্নটি একটি সহজ ইন্টারফেস তৈরির ফলস্বরূপ অন্যান্য অনেক ইন্টারফেসের একটি মোড়ক।

ডিজাইনের ধরণগুলি দরকারী কারণ তারা পুনরাবৃত্তি সমস্যাগুলি সমাধান করে এবং সাধারণভাবে কোড সরল করে ify বিকাশকারীদের একটি দলে যারা একই প্যাটার্নগুলি ব্যবহার করতে সম্মত হন এটি একে অপরের কোড বজায় রাখার সময় দক্ষতা এবং বোঝার উন্নতি করে।

আরও নিদর্শন সম্পর্কে পড়ার চেষ্টা করুন:

মুখোমুখি প্যাটার্ন: http://www.dofactory.com/Patterns/PatternFacade.aspx#_self1

বা আরও সাধারণভাবে: http://www.dofactory.com/Patterns/Patterns.aspx


nleshgule.com/2012/07/facade-design-pattern.html আমি হোম loan যাচাইকরণ প্রক্রিয়াটির উদাহরণ সহ এখানে ফ্যাসাদে নকশার ধরণটি বর্ণনা করার চেষ্টা করেছি।
নীলেশ গুলে

6

ফ্যাডে প্যাটার্নের একটি অতিরিক্ত ব্যবহার হতে পারে আপনার দলের শেখার বক্ররেখা হ্রাস করা। আমাকে যদি আপনি একটি উদাহরণ দিতে:

আসুন আমরা ধরে নিই যে আপনার অ্যাপ্লিকেশনটির এমএস এক্সেলের সাথে এক্সেল দ্বারা সরবরাহিত সিওএম অবজেক্ট মডেলটি ব্যবহার করে যোগাযোগ করা দরকার। আপনার দলের সদস্যদের মধ্যে একটি সমস্ত এক্সেল এপিআই জানে এবং সে এর উপরে একটি মুখোমুখি তৈরি করে, যা অ্যাপ্লিকেশনটির সমস্ত বেসিক পরিস্থিতি পূরণ করে। দলের অন্য কোনও সদস্যের এক্সেল এপিআই শিখতে সময় ব্যয় করার দরকার নেই। দলটি কোনও দৃশ্যের পরিপূর্ণতায় জড়িত ইন্টার্নাল বা সমস্ত এমএস এক্সেল বস্তুগুলি না জেনে মুখোমুখি ব্যবহার করতে পারে। এটা দারুণ না?

সুতরাং, এটি একটি জটিল সাব-সিস্টেমের শীর্ষে একটি সরলীকৃত এবং একীভূত ইন্টারফেস সরবরাহ করে।


5

মুখোশের আরও একটি উদাহরণ: বলুন যে আপনার অ্যাপ্লিকেশনটি ডেটাবেসের সাথে সংযুক্ত রয়েছে এবং ইউআইতে ফলাফল প্রদর্শন করবে। আপনি নিজের অ্যাপ্লিকেশনটিকে কনফিগারযোগ্য করার জন্য মুখোশ ব্যবহার করতে পারেন, যেমন ডেটাবেস ব্যবহার করে বা মক অবজেক্টগুলি ব্যবহার করে। সুতরাং আপনি মুখোমুখি ক্লাসে সমস্ত ডাটাবেস কল করবেন, যেখানে এটি অ্যাপ্লিকেশন কনফিগারেশনটি পড়বে এবং ডিবি কোয়েরিটি বরখাস্ত করার বা মক অবজেক্টটি ফিরিয়ে দেওয়ার সিদ্ধান্ত নেবে। ডিবি অনুপলব্ধ ক্ষেত্রে এইভাবে অ্যাপ্লিকেশনটি ডিবি স্বাধীন হয়ে যায়।


5

একটি মুখোমুখি সরলীকৃত ফাংশনগুলি প্রকাশ করে যা বেশিরভাগ বলা হয় এবং প্রয়োগটি ক্লায়েন্টদের অন্যথায় মোকাবেলা করতে হবে এমন জটিলতাটি গোপন করে। সাধারণভাবে বাস্তবায়নে একাধিক প্যাকেজ, ক্লাস এবং সেখানে ফাংশন ব্যবহার করা হয় Well ভাল লিখিত পক্ষগুলি অন্য শ্রেণীর সরাসরি অ্যাক্সেসকে বিরল করে। উদাহরণস্বরূপ যখন আমি কোনও এটিএম পরিদর্শন করি এবং কিছু পরিমাণ প্রত্যাহার করি। এটিএম সরাসরি মালিকানাধীন ব্যাঙ্কে চলে যাচ্ছে বা কোনও বহিরাগত ব্যাংকের জন্য কোনও আলোচনার নেটওয়ার্কের মধ্য দিয়ে যাচ্ছে কিনা তা এটিএমটি লুকিয়ে রাখে। এটিএমটি একাধিক ডিভাইস এবং উপ-সিস্টেম গ্রাসকারী একটি মুখের মতো কাজ করে যা ক্লায়েন্ট হিসাবে আমাকে সরাসরি মোকাবেলা করতে হবে না।


5

প্যাটার্নটির একটি খুব ভাল বাস্তব জীবনের উদাহরণ রয়েছে - গাড়ি স্টার্টার ইঞ্জিন

ড্রাইভার হিসাবে, আমরা কেবল কীটি চালু করি এবং গাড়িটি শুরু হয়। যতটা সম্ভব সহজ। পর্দার আড়ালে, অন্যান্য অনেক গাড়ি সিস্টেম জড়িত (যেমন ব্যাটারি, ইঞ্জিন, জ্বালানি ইত্যাদি), যাতে গাড়িটি সফলভাবে শুরু করা যায় তবে তারা স্টারটারের আড়ালে লুকিয়ে থাকে।

আপনি দেখতে পাচ্ছেন, গাড়ী স্টার্টারটি ফেকড। এটি আমাদের অন্যান্য সমস্ত গাড়ি সিস্টেমের জটিলতার বিষয়ে চিন্তা না করেই ইন্টারফেসটি ব্যবহার করা সহজ করে।

সংক্ষেপে বলা যাক:

ফেকাড প্যাটার্নটি সহজতর করে এবং বৃহত কোড ব্লক বা এপিআইয়ের জটিলতা গোপন করে, একটি ক্লিনার, বোধগম্য এবং সহজে ব্যবহারের ইন্টারফেস সরবরাহ করে।


4

একটি মুখোমুখি হ'ল একটি ক্লাস যা কার্যকারিতা একটি স্তর যা একটি সরঞ্জামকিট এবং একটি সম্পূর্ণ অ্যাপ্লিকেশন মধ্যে থাকে, একটি প্যাকেজ বা সাবসিস্টেমের ক্লাসগুলির সরলিকৃত ব্যবহারের প্রস্তাব করে। মুখের প্যাটার্নের উদ্দেশ্যটি এমন একটি ইন্টারফেস সরবরাহ করা যা একটি সাবসিস্টেমটি ব্যবহার করা সহজ করে। - সি # তে বইয়ের নকশার প্যাটার্নগুলি থেকে বের করুন ।


4

ফেকাড একটি একক ইন্টারফেস অবজেক্টের মধ্যে একটি জটিল সাবসিস্টেম এনক্যাপসুলেট করার বিষয়ে আলোচনা করে। এটি সাবসিস্টেমটি সফলভাবে লাভ করার জন্য প্রয়োজনীয় শিক্ষার বক্ররেখা হ্রাস করে। এটি এর সম্ভাব্য অনেক ক্লায়েন্টদের থেকে সাবসিস্টেম ডিক্লোলিংকেও উত্সাহ দেয়। অন্যদিকে, ফ্যাসাদ যদি সাবসিস্টেমের একমাত্র অ্যাক্সেস পয়েন্ট হয় তবে এটি "বিদ্যুৎ ব্যবহারকারীদের" প্রয়োজনীয় বৈশিষ্ট্য এবং নমনীয়তা সীমাবদ্ধ করবে।

সূত্র: https://sourcemaking.com/design_patterns/facade


3

একটি ডিজাইনের প্যাটার্ন হ'ল সফ্টওয়্যার ডিজাইনের একটি নির্দিষ্ট প্রসঙ্গে একটি সাধারণ পুনরায় ব্যবহারযোগ্য সমাধান।

মুখোমুখি নকশা প্যাটার্ন একটি কাঠামোগত নিদর্শন কারণ এটি শ্রেণি বা সত্তার মধ্যে সম্পর্ক তৈরি করার জন্য একটি পদ্ধতি নির্ধারণ করে। আরও জটিল সাবসিস্টেমের সরলিকৃত ইন্টারফেসটি সংজ্ঞায়িত করার জন্য মুখোমুখি নকশার প্যাটার্নটি ব্যবহৃত হয়।

বিপুল সংখ্যক আন্তঃনির্ভরশীল ক্লাসগুলির সাথে কাজ করার সময় বা একাধিক পদ্ধতির ব্যবহারের প্রয়োজন এমন শ্রেণীর সাথে কাজ করার সময় মুখোমুখি প্যাটার্নটি আদর্শ, বিশেষত যখন তারা ব্যবহার করতে জটিল বা বুঝতে অসুবিধা হয়। ফেকাস ক্লাসটি এমন একটি "র‍্যাপার" যা এতে সদস্যদের একটি সেট থাকে যা সহজেই বোঝা যায় এবং ব্যবহার করা সহজ। এই সদস্যগণ বাস্তবায়নের বিশদটি গোপন করে সামনের ব্যবহারকারীর পক্ষে সাবসিস্টেমটি অ্যাক্সেস করে।

ফ্যাসাদ ডিজাইনের প্যাটার্নটি বিশেষত কার্যকর যখন সাবসিস্টেমগুলি ভালভাবে নকশাকৃত তবে মোড়ক ব্যবহার করা যায় না কারণ উত্স কোডটি উপলভ্য নয় বা বিদ্যমান ইন্টারফেসটি ব্যাপকভাবে ব্যবহৃত হয়। কখনও কখনও আপনি বিভিন্ন উদ্দেশ্যে কার্যকারিতার সাবসেট সরবরাহ করতে একাধিক উপদ্বীপ বাস্তবায়ন করার সিদ্ধান্ত নিতে পারেন।

মুখের প্যাটার্নের একটি উদাহরণ ব্যবসায়িক অ্যাপ্লিকেশন সহ কোনও ওয়েবসাইটকে সংহত করার জন্য। বিদ্যমান সফ্টওয়্যারটিতে প্রচুর পরিমাণে ব্যবসায়িক যুক্তি অন্তর্ভুক্ত থাকতে পারে যা নির্দিষ্ট পদ্ধতিতে অ্যাক্সেস করতে হবে। ওয়েব সাইটের জন্য এই ব্যবসায়িক যুক্তিতে সীমাবদ্ধ অ্যাক্সেসের প্রয়োজন হতে পারে। উদাহরণস্বরূপ, বিক্রয়ের জন্য কোনও আইটেম সীমিত মাত্রায় পৌঁছেছে কিনা তা ওয়েব সাইটে দেখানো দরকার। ফেইসড ক্লাসের ইসলাউস্টক পদ্ধতিটি এটি বোঝাতে একটি বুলিয়ান মান প্রদান করতে পারে। পর্দার আড়ালে, এই পদ্ধতিটি বর্তমান শারীরিক স্টক, ইনকামিং স্টক, বরাদ্দ আইটেম এবং প্রতিটি আইটেমের জন্য নিম্ন স্টক স্তরের প্রক্রিয়াজাতকরণের জটিলতাগুলি লুকিয়ে রাখতে পারে।


2

সমস্ত ডিজাইনের নিদর্শনগুলি এমন কোনও শ্রেণি যা কোনওভাবে বা অন্যভাবে সজ্জিত হয় যা একটি নির্দিষ্ট অ্যাপ্লিকেশনটির জন্য উপযুক্ত। মুখের প্যাটার্নের উদ্দেশ্য হ'ল কোনও অপারেশন বা অপারেশনগুলির জটিলতা আড়াল করা। আপনি একটি উদাহরণ দেখতে পারেন এবং http://preciselyconcise.com/design_patterns/facade.php থেকে মুখের ধরণ শিখতে পারেন


2

এটি কেবল একাধিক পদ্ধতিতে কল করার জন্য একটি মোড়ক তৈরি করে। আপনার কাছে মেথড x () এবং y () এবং মেথ কে () এবং জেড () সহ বি ক্লাস রয়েছে। আপনি x, y, z কে একবারে কল করতে চান, এটির জন্য, মুখের প্যাটার্নটি ব্যবহার করে আপনি কেবল একটি ফোকাস ক্লাস তৈরি করেন এবং একটি পদ্ধতি তৈরি করেন যা xyz () বলতে দেয়। প্রতিটি পদ্ধতিকে (x, y এবং z) পৃথকভাবে কল করার পরিবর্তে আপনি কেবল মুখোমুখি শ্রেণীর মোড়ক পদ্ধতিটিকে (xyz ()) কল করতে পারেন যা এই পদ্ধতিগুলি কল করে।

অনুরূপ প্যাটার্নটি সংগ্রহস্থল তবে এটি মূলত ডেটা অ্যাক্সেস স্তরের জন্য।



1

ফেকাড ডিজাইন প্যাটার্ন স্ট্রাকচারাল ডিজাইন প্যাটার্নের অধীনে আসে। সংক্ষেপে মুখের অর্থ বাহ্যিক উপস্থিতি। এর অর্থ হল ফেকাড ডিজাইনের ধরণে আমরা কিছু লুকিয়ে থাকি এবং কেবল ক্লায়েন্টের কী প্রয়োজন তা কেবল তা দেখাই। নীচের ব্লগে আরও পড়ুন: http://www.sharePointcafe.net/2017/03/facade-design-pattern-in-aspdotnet.html


1

ফ্যাসাদ প্যাটার্নটি সাবসিস্টেম ইন্টারফেস গ্রুপকে একটি ইউনিফাইড ইন্টারফেস সরবরাহ করে। সম্মুখভাগটি একটি উচ্চ-স্তরের ইন্টারফেস সংজ্ঞায়িত করে, যা সাবসিস্টেমের সাহায্যে কাজটি সহজ করে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.