2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Välityspalvelinmalli on rakenteellinen suunnittelumalli, joka ohjaa pääsyä toiseen kohteeseen ottamalla käyttöön välityspalvelinobjektin. Tämä välityspalvelinobjekti voi tarjota lisätoimintoja välityspalvelinobjektille, kuten pääsynhallinnan, laiska alustuksen, lokikirjauksen tai verkkoyhteyden.
etäagentti:
virtuaalinen agentti:
suoja-aine:
Älykäs opastus:
Seuraavassa on yksinkertainen toteutusesimerkki välityspalvelimen mallista, joka näyttää kuinka ohjataan pääsyä todelliseen kohteeseen välityspalvelinobjektin kautta.
public interface Subject {
void request();
}
Subject
Käyttöliittymä määrittelee arequest
Method, tämä on menetelmä, joka sekä varsinaisen objektin että välityspalvelinobjektin on toteutettava.public class RealSubject implements Subject {
public void request() {
System.out.println("RealSubject: Handling request.");
}
}
RealSubject
luokka toteutettuSubject
Käyttöliittymärequest
Menetelmä, joka edustaa luokkaa, joka todella käsittelee pyynnön.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
luokka toteutettuSubject
käyttöliittymä ja sisältää aRealSubject
esine.request
Metodissa proxy-luokka tarkistaa ensin pääsyoikeudet ja sitten kutsuu todellisen objektinrequest
menetelmällä ja tallenna lopuksi pyyntöloki.public class Client {
public static void main(String[] args) {
RealSubject realSubject = new RealSubject();
Proxy proxy = new Proxy(realSubject);
proxy.request();
}
}
Client
luokka luotuRealSubject
jaProxy
esine, läpiProxy
Objektipuhelurequest
tapa hallitaRealSubject
Pääsy.Eristäytyminen:
turvallisuutta:
Skaalautuvuus:
Älykäs:
koodin monimutkaisuus:
Vasteaika:
Suunnittelun vaikeus:
Client
|
v
Subject <---- Proxy <---- RealSubject
Välityspalvelinmalli tarjoaa tehokkaan tavan hallita ja hallita objektien käyttöä. Välityspalvelinten avulla voit lisätä erilaisia toimintoja ja pitää samalla liikeobjektien vastuut selvänä. Tämä tila sopii erityisen hyvin skenaarioihin, jotka edellyttävät pääsynhallintaa ja muita liiketoimintaobjektien esikäsittelytoimintoja.
Julkisivukuvio on rakennesuunnittelumalli, joka helpottaa monimutkaisten osajärjestelmien käyttöä tarjoamalla yhtenäisen rajapinnan alajärjestelmän rajapintojen ryhmään pääsyä varten. Julkisivukuvio määrittelee korkean tason rajapinnan, joka tekee tämän osajärjestelmän käytöstä helpompaa.
Yksinkertaista rajapintoja monimutkaisiin järjestelmiin:
Hierarkia:
Irrotettu järjestelmä:
Seuraavassa on yksinkertainen toteutusesimerkki Julkisivukuviosta, joka näyttää kuinka yksinkertaistaa alijärjestelmien käyttöä julkisivuluokkien avulla.
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();
}
}
Alajärjestelmän luokka:
SubsystemA
, SubsystemB
, ja SubsystemC
Se on alijärjestelmän erityinen toteutusluokka, ja jokaisella luokalla on oma ainutlaatuinen toimintatapa.Ulkonäköluokka:
Facade
Luokat sisältävät alijärjestelmäobjekteja ja tarjoavat yksinkertaistettuja rajapintojaoperation1
jaoperation2
kutsua alijärjestelmän toimintoja.asiakaskoodi:
Client
luokka meni läpiFacade
luokka soittaaoperation1
jaoperation2
yksinkertaistaa siten monimutkaisten osajärjestelmien käyttöä.Yksinkertaistettu käyttöliittymä:
löysä kytkentä:
parempi kerrostus:
Ei noudata auki-kiinni -periaatetta:
Voi aiheuttaa suorituskykyongelmia:
Client
|
v
Facade ----> SubsystemA
----> SubsystemB
----> SubsystemC
Julkisivukuvio helpottaa monimutkaisten osajärjestelmien kanssa työskentelyä tarjoamalla yksinkertaistetun käyttöliittymän. Se sopii skenaarioihin, joissa on tarpeen yksinkertaistaa alijärjestelmän rajapintaa, vähentää suoraa vuorovaikutusta asiakkaan ja osajärjestelmän välillä ja irrottaa järjestelmähierarkia. Vaikka se saattaa loukata auki-kiinni -periaatetta, useimmissa tapauksissa sen edut ovat paljon suuremmat kuin sen haitat, mikä tekee järjestelmän suunnittelusta selkeämmän ja helpompia ylläpitää.