suchen
HeimJavajavaLernprogrammBeispielcode, der die offenen und geschlossenen Prinzipien von Java-Entwurfsmustern kurz vorstellt

Dieser Artikel stellt hauptsächlich das offene und geschlossene Prinzip von Java vorDer Herausgeber findet es ziemlich gut. Jetzt werde ich es mit Ihnen teilen und als Referenz geben. Folgen wir dem Herausgeber und werfen wir einen Blick darauf 🎜>kann Bemerkenswert sein. Aber manche Orte sind einschüchternd und manche Codes sind aufgebläht und schwer einzuhalten, was die Menschen unwürdig macht. Daher wurde, basierend auf dem offenen und geschlossenen Prinzip von Java, ein Teil des Codes überarbeitet und optimiert.

Sehen wir uns zunächst den alten Code des vorherigen Systems an

ShareChannelManager.javashareChannel Diese Methode trägt den Hauptlink des Kanallogik teilen. Der für verschiedene Kanäle freigegebene Code ist in der Methode einer Klasse geschrieben, die sehr aufgebläht und schwer zu warten ist. Jedes Mal, wenn Sie einen Freigabekanal hinzufügen, müssen Sie diese schwergewichtige Methode ändern. Wenn Ihre Hände leicht zittern und Sie einen Fehler machen, hat dies Auswirkungen auf das Teilen auf anderen

Kanälen. Gleichzeitig verstößt es auch gegen das offene und geschlossene Prinzip von Java.

Stellen Sie das offene und geschlossene Prinzip von Java vor

public ResultDO<String> shareChannel(int shareCode) {

  if(ShareCodeUtil.share2A(shareCode)) {
     // TODO, 分享到A渠道的业务逻辑代码
  }

  if(ShareCodeUtil.share2B(shareCode)) {
     // TODO, 分享到B渠道的业务逻辑代码
  }

  ...渠道n...
}
Das offene und geschlossene Prinzip von Java vermittelt den Menschen auf den ersten Blick ein widersprüchliches Gefühl. Warum ist es geschlossen, wenn es geöffnet ist? Nehmen Sie es nicht für bare Münze. Denken Sie aus zwei Dimensionen: **offen** und ***geschlossen**. Das offene Prinzip von Java bedeutet, dass die entworfene Architektur eine gute Skalierbarkeit aufweist, während das geschlossene Prinzip bedeutet, dass die Hauptverbindung der Systemarchitektur bei Geschäftsiterationen nicht wesentlich geändert werden kann. Selbst wenn dies häufig vorkommt, kann dies nur bedeuten, dass ein Problem vorliegt mit der Architektur des Systems. Jedes System muss einen Prozess von 0 bis 1 durchlaufen. Während sich das Unternehmen weiterentwickelt, kann es auch sein, dass das System unverändert bleibt. Wie wir die Architektur des Systems

zukunftsorientiert und skalierbar gestalten können, sind technische Punkte, die wir bei der täglichen Entwicklung berücksichtigen müssen. Kurz gesagt, das offene und geschlossene Prinzip von Java weist zwei Merkmale auf.

– Offen für Verlängerung

– Geschlossen wegen Änderungen

  1. Basierend auf der

    Designprinzipien

    oben erwähnt, wie man die oben genannten Probleme optimieren kann
  2. besteht darin, mehrere Sharing-Kanäle zu Kettenanrufen zu kombinieren. Abstrahieren Sie Sharing-Aktionen und verteilen Sie sie zur Umsetzung an verschiedene Kanäle.

  3. Kette des Freigabekanals definieren

Übergeordnete Klasse des Freigabekanals definieren

Eine Kanalfreigabe

public class ShareChannelChain {  
  private final Logger LOG = LoggerFactory.getLogger(this.getClass());

  /**
   * 分享渠道链
   */
  private List<ShareChannel> shareChannels;
  public ResultDO<String> share(int shareCode) {
    for (ShareChannel s : shareChannels) {
      ResultDO<String> r = s.share(shareCode);
         }
  }

B-Kanal-Freigabe

public interface ShareChannel {
  public ResultDO<String> share(int shareCod);
}

Fügen Sie AChannel und BChannel zu einer Anrufkette ShareChannelChain zusammen.

Channel Sharing Main
public class AChannel implements ShareChannel {

  @Override
  public ResultDO<String> share(int shareCode) {
       // TODO 分享A渠道逻辑
    }
}
Schnittstelle

ShareChannelManager.java
public class BChannel implements ShareChannel {

  @Override
  public ResultDO<String> share(int shareCode) {
       // TODO 分享B渠道逻辑
    }
}

  <bean id="AChannel" class="com.test.AChannel">
  </bean>
  <bean id="BChannel" class="com.test.BChannel">
  </bean>
  <bean id="shareChannelChain" class="com.test.ShareChannelChain">
    <property name="shareChannels">
      <list>
        <ref local="AChannel"/>
        <ref local="BChannel"/>
      </list>
    </property>
  </bean>
Lassen Sie es uns zum Schluss noch einmal durchgehen Schauen Sie sich die Vorteile der optimierten Architektur an

Angenommen, es gibt einen neuen Kanal zum Teilen von Geschäftsanforderungen, CChannel, denken Sie über die Punkte nach, die wir ändern möchten. Diesmal besteht keine Notwendigkeit, die Kernklassenlogik von ShareChannelManager zu ändern. Sie müssen lediglich einen CChannel erweitern, die Share-Methode der ShareChannel-Schnittstelle implementieren und ihn dann in XML konfigurieren. Das Risiko einer solchen Änderung kann kontrolliert werden und hat keinen Einfluss auf die Kernklassenlogik.

Das obige ist der detaillierte Inhalt vonBeispielcode, der die offenen und geschlossenen Prinzipien von Java-Entwurfsmustern kurz vorstellt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Was sind die Vorteile der Verwendung von Bytecode gegenüber dem nativen Code für die Unabhängigkeit von Plattform?Was sind die Vorteile der Verwendung von Bytecode gegenüber dem nativen Code für die Unabhängigkeit von Plattform?Apr 30, 2025 am 12:24 AM

BytecodeachieVesplattformindependencyBeineingexecutedByavirtualMachine (VM), ZulassencodetorunonanyPlatformWiththeApprotecuse -Forexample, JavabytecodecanrunonanyDeviceWithajvm, Enabling "Writeonce, Runanywhere," Funktionalität "Funktionalität" Funktionalität "Funktionalität" Funktionalität "Funktionalität" Funktionalität "Funktionalität" Funktionalität "Funktionalität" functionaly.- "Funktionalität" Funktionalität "

Ist Java wirklich 100% plattformunabhängig? Warum oder warum nicht?Ist Java wirklich 100% plattformunabhängig? Warum oder warum nicht?Apr 30, 2025 am 12:18 AM

Java kann keine 100% ige Plattformunabhängigkeit erreichen, aber die Unabhängigkeit der Plattform wird über JVM und Bytecode implementiert, um sicherzustellen, dass der Code auf verschiedenen Plattformen ausgeführt wird. Spezifische Implementierungen umfassen: 1. Zusammenstellung in Bytecode; 2. Interpretation und Ausführung von JVM; 3. Konsistenz der Standardbibliothek. JVM-Implementierungsunterschiede, Betriebssystem- und Hardwareunterschiede sowie die Kompatibilität von Bibliotheken von Drittanbietern können sich jedoch auf die Unabhängigkeit der Plattform auswirken.

Wie unterstützt Javas Plattform -Unabhängigkeits -Code -Wartbarkeit?Wie unterstützt Javas Plattform -Unabhängigkeits -Code -Wartbarkeit?Apr 30, 2025 am 12:15 AM

Java realisiert die Unabhängigkeit der Plattform durch "einmal schreiben, überall rennen" und verbessert die Code -Wartbarkeit: 1. REUSE der Code und reduziert die doppelte Entwicklung; 2. Niedrige Wartungskosten, es ist nur eine Änderung erforderlich; 3. Die Effizienz der High -Team -Kollaboration ist hoch und bequem für den Wissensaustausch.

Was sind die Herausforderungen bei der Erstellung eines JVM für eine neue Plattform?Was sind die Herausforderungen bei der Erstellung eines JVM für eine neue Plattform?Apr 30, 2025 am 12:15 AM

Zu den Hauptherausforderungen, denen sich eine JVM auf einer neuen Plattform erstellen, gehören Hardwarekompatibilität, Kompatibilität für Betriebssysteme und Leistungsoptimierung. 1. Hardwarekompatibilität: Es ist erforderlich, sicherzustellen, dass das JVM den Prozessoranweisungssatz der neuen Plattform wie RISC-V korrekt verwenden kann. 2. Betriebssystemkompatibilität: Die JVM muss die System -API der neuen Plattform korrekt aufrufen, z. B. Linux. 3. Leistungsoptimierung: Leistungstests und -abstimmungen sind erforderlich, und die Strategie zur Müllsammlung wird angepasst, um sich an die Speichermerkmale der neuen Plattform anzupassen.

Wie versucht die Javafx -Bibliothek, Plattformkonsistenzen in der GUI -Entwicklung zu beheben?Wie versucht die Javafx -Bibliothek, Plattformkonsistenzen in der GUI -Entwicklung zu beheben?Apr 30, 2025 am 12:01 AM

JavafxeffectivyadDresSplatforminconsistencieSinguidevelopmentByusingAPLATFORM-AGNOSTICSCENGRAPHANDCSSSTYLING.1) ItabstractSpecifificSthroughascenegraph, SorteConsistentrendingacrosswindows, Macos undlinux.2) csSstylingallowlowlowlows

Erklären Sie, wie die JVM als Vermittler zwischen dem Java -Code und dem zugrunde liegenden Betriebssystem fungiert.Erklären Sie, wie die JVM als Vermittler zwischen dem Java -Code und dem zugrunde liegenden Betriebssystem fungiert.Apr 29, 2025 am 12:23 AM

JVM arbeitet mit dem Konvertieren von Java -Code in Maschinencode und Verwaltung von Ressourcen. 1) Ladeklasse: Laden Sie die .class -Datei in den Speicher. 2) Laufzeitdatenbereich: Speicherbereich verwalten. 3) Ausführungs Engine: Ausführungsbytecode interpretieren oder kompilieren. 4) Lokale Methodenschnittstelle: Interagieren Sie mit dem Betriebssystem über JNI.

Erklären Sie die Rolle der Java Virtual Machine (JVM) in der Unabhängigkeit der Plattform von Java.Erklären Sie die Rolle der Java Virtual Machine (JVM) in der Unabhängigkeit der Plattform von Java.Apr 29, 2025 am 12:21 AM

Mit JVM kann Java auf Plattformen rennen. 1) JVM lädt, validiert und führt Bytecode aus. 2) Die Arbeit von JVM umfasst Klassenbelastung, Bytecode -Überprüfung, Interpretationsausführung und Speicherverwaltung. 3) JVM unterstützt erweiterte Funktionen wie dynamisches Klassenbelastung und Reflexion.

Welche Schritte würden Sie unternehmen, um sicherzustellen, dass eine Java -Anwendung in verschiedenen Betriebssystemen korrekt ausgeführt wird?Welche Schritte würden Sie unternehmen, um sicherzustellen, dass eine Java -Anwendung in verschiedenen Betriebssystemen korrekt ausgeführt wird?Apr 29, 2025 am 12:11 AM

Java -Anwendungen können in verschiedenen Betriebssystemen in den folgenden Schritten ausgeführt werden: 1) Verwenden Sie die Datei- oder Pfadeklasse, um Dateipfade zu verarbeiten; 2) Umgebungsvariablen durch system.getenv () einstellen und erhalten; 3) Verwenden Sie Maven oder Gradle, um Abhängigkeiten zu verwalten und zu testen. Die plattformübergreifenden Funktionen von Java beruhen auf der Abstraktionsschicht der JVM, erfordern jedoch eine manuelle Handhabung bestimmter Betriebssystem-spezifischer Funktionen.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Herunterladen der Mac-Version des Atom-Editors

Herunterladen der Mac-Version des Atom-Editors

Der beliebteste Open-Source-Editor

EditPlus chinesische Crack-Version

EditPlus chinesische Crack-Version

Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Sicherer Prüfungsbrowser

Sicherer Prüfungsbrowser

Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.

SAP NetWeaver Server-Adapter für Eclipse

SAP NetWeaver Server-Adapter für Eclipse

Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.