2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Proxy Pattern इति संरचनात्मकं डिजाइन-प्रतिरूपं यत् प्रॉक्सी-वस्तुं परिचययित्वा अन्यस्य वस्तुनः प्रवेशं नियन्त्रयति । इदं प्रॉक्सी-वस्तुं प्रॉक्सी-वस्तुं अतिरिक्तं कार्यक्षमतां प्रदातुं शक्नोति, यथा अभिगम-नियन्त्रणं, आलस्य-प्रारम्भः, लॉगिंग्, अथवा संजाल-प्रवेशः ।
दूरस्थः कारकः:
आभासी कारक:
रक्षणकारक:
स्मार्ट मार्गदर्शन:
निम्नलिखितम् प्रॉक्सी-प्रतिमानस्य सरलं कार्यान्वयन-उदाहरणम् अस्ति, यत् प्रॉक्सी-वस्तुद्वारा वास्तविक-वस्तु-प्रवेशं कथं नियन्त्रयितुं शक्यते इति दर्शयति ।
public interface Subject {
void request();
}
Subject
अन्तरफलकं परिभाषयति कrequest
विधिः, एषः एव विधिः यत् वास्तविकस्य वस्तुनः प्रॉक्सीवस्तुनः च कार्यान्वयनस्य आवश्यकता वर्तते ।public class RealSubject implements Subject {
public void request() {
System.out.println("RealSubject: Handling request.");
}
}
RealSubject
वर्गः कार्यान्वितःSubject
अन्तरफलकम्request
विधिः, यत् वर्गं वास्तवतः अनुरोधं सम्पादयति तस्य प्रतिनिधित्वं करोति ।public class Proxy implements Subject {
private RealSubject realSubject;
public Proxy(RealSubject realSubject) {
this.realSubject = realSubject;
}
public void request() {
if (this.checkAccess()) {
this.realSubject.request();
this.logAccess();
}
}
private boolean checkAccess() {
// 检查访问权限
System.out.println("Proxy: Checking access prior to firing a real request.");
return true;
}
private void logAccess() {
// 记录请求日志
System.out.println("Proxy: Logging the time of request.");
}
}
Proxy
वर्गः कार्यान्वितःSubject
अन्तरफलकं धारयति च aRealSubject
वस्तु।request
मेथड् मध्ये प्रॉक्सी क्लास् प्रथमं एक्सेस् अनुमतिः परीक्षते ततः वास्तविकस्य ऑब्जेक्ट् इत्यस्य आह्वानं करोतिrequest
विधिः, अन्ते च अनुरोधवृत्तलेखं अभिलेखयन्तु ।public class Client {
public static void main(String[] args) {
RealSubject realSubject = new RealSubject();
Proxy proxy = new Proxy(realSubject);
proxy.request();
}
}
Client
वर्गः निर्मितःRealSubject
तथाProxy
वस्तु, माध्यमेनProxy
वस्तु आह्वानrequest
विधिः नियन्त्रयितुंRealSubject
अभिगमः।एकान्तवासः:
सुरक्षा:
मापनीयता:
चतुरः:
कोड जटिलता:
प्रतिक्रिया समय:
डिजाइन कठिनता:
Client
|
v
Subject <---- Proxy <---- RealSubject
प्रॉक्सी-प्रतिमानं वस्तुषु प्रवेशं नियन्त्रयितुं प्रबन्धनं च कर्तुं कुशलं मार्गं प्रदाति । प्रॉक्सी इत्यस्य उपयोगेन व्यावसायिकवस्तूनाम् उत्तरदायित्वं स्पष्टं कृत्वा विविधानि कार्याणि योजयितुं शक्नुवन्ति । एषः मोड् विशेषतया तेषां परिदृश्यानां कृते उपयुक्तः अस्ति येषु व्यावसायिकवस्तूनाम् अभिगमनियन्त्रणम् अन्येषां पूर्वसंसाधनक्रियाणां च आवश्यकता भवति ।
Facade Pattern एकः संरचनात्मकः डिजाइन-प्रतिरूपः अस्ति यः उपतन्त्रे अन्तरफलकानां समूहं प्राप्तुं एकीकृतं अन्तरफलकं प्रदातुं जटिल-उपतन्त्राणां उपयोगं सुलभं करोति मुखाकृतिप्रतिमानं उच्चस्तरीयं अन्तरफलकं परिभाषयति यत् अस्य उपतन्त्रस्य उपयोगः सुलभं करोति ।
जटिलप्रणालीनां कृते अन्तरफलकानि सरलीकरोतु:
पदानुक्रमं:
वियुग्मित प्रणाली:
निम्नलिखितम् Facade-प्रतिमानस्य सरलं कार्यान्वयन-उदाहरणम् अस्ति, यत् facade-वर्गाणां माध्यमेन उपतन्त्राणां उपयोगं कथं सरलीकरोति इति दर्शयति ।
public class SubsystemA {
public void operationA() {
System.out.println("SubsystemA: operationA");
}
}
public class SubsystemB {
public void operationB() {
System.out.println("SubsystemB: operationB");
}
}
public class SubsystemC {
public void operationC() {
System.out.println("SubsystemC: operationC");
}
}
public class Facade {
private SubsystemA subsystemA;
private SubsystemB subsystemB;
private SubsystemC subsystemC;
public Facade() {
this.subsystemA = new SubsystemA();
this.subsystemB = new SubsystemB();
this.subsystemC = new SubsystemC();
}
public void operation1() {
System.out.println("Facade: operation1");
subsystemA.operationA();
subsystemB.operationB();
}
public void operation2() {
System.out.println("Facade: operation2");
subsystemB.operationB();
subsystemC.operationC();
}
}
public class Client {
public static void main(String[] args) {
Facade facade = new Facade();
facade.operation1();
facade.operation2();
}
}
उपतन्त्रवर्गः:
SubsystemA
, SubsystemB
, तथा SubsystemC
उपतन्त्रस्य विशिष्टः कार्यान्वयनवर्गः अस्ति, प्रत्येकस्य वर्गस्य स्वकीया विशिष्टा संचालनविधिः अस्ति ।रूपवर्गः:
Facade
वर्गाः उपतन्त्रवस्तूनि धारयन्ति, सरलीकृतानि अन्तरफलकानि च प्रदास्यन्तिoperation1
तथाoperation2
उपतन्त्रकार्यं आह्वयितुं ।क्लायन्ट् कोड:
Client
वर्ग उत्तीर्णः अभवत्Facade
class to call इतिoperation1
तथाoperation2
, एवं जटिल उपतन्त्राणां उपयोगः सरलः भवति ।सरलीकृतं अन्तरफलकं:
शिथिलयुग्मनम्:
उत्तमं स्तरीकरणम्:
मुक्त-निमीप-सिद्धान्तस्य अनुपालनं न करोति:
कार्यप्रदर्शनस्य समस्याः उत्पद्यन्ते:
Client
|
v
Facade ----> SubsystemA
----> SubsystemB
----> SubsystemC
Facade-प्रतिमानं सरल-अन्तरफलकं प्रदातुं जटिल-उपतन्त्रैः सह कार्यं सुलभं करोति । यत्र उपतन्त्र-अन्तरफलकस्य सरलीकरणं, ग्राहकस्य उपतन्त्रस्य च प्रत्यक्ष-अन्तर्क्रियायाः न्यूनीकरणं, प्रणाली-पदानुक्रमस्य वियुग्मनं च आवश्यकं भवति तत्र परिदृश्यानां कृते उपयुक्तम् अस्ति यद्यपि तस्य मुक्त-बन्द-सिद्धान्तस्य उल्लङ्घनस्य क्षमता अस्ति तथापि अधिकतया तस्य लाभाः तस्य हानिभ्यः दूरं अधिकं भवन्ति, येन प्रणाली-निर्माणं स्पष्टतरं, परिपालनं च सुकरं भवति