SORU
27 Ocak 2009, Salı


Cephe vs Arabulucu

Bu iki modelin arasındaki farkı araştırıyorum.

Cephe alt sistemi erişimi saklar ve arabulucu bileşenleri arasındaki etkileşimleri içeren anlıyorum.

Alt sistem bileşenleri bileşenleri arabulucu belli ki farkında olduğu cephe, farkında olmadığını anlıyorum.

Şu anda yapılandırma bilgilerini alma yöntemi, örneğin Uygulama ve davetkar bir cephe kullanıyorum.Yapılandırma, kullanıcı ayarı SQL, Assembly bilgi, vb, ve farklı windows formlar arasında gezinti için bir arabulucu saklı.

Ancak, çoğu site arabulucu bu işaret “ekler işlevleri”. Bu ne demek? Nasıl arabulucu işlevi kazandırır?

CEVAP
27 Ocak 2009, Salı


...çoğu site arabulucu bu işaret “işlevsellik ekler”...

cephesadece farklı bir bakış açısıyla varolan sunar.

arabulucu"ekler farklı işlevler yeni bir tane oluşturmak için birleştirir çünkü" işlevselliği.

Aşağıdaki örnek alalım:

Günlük bir sistem var. Günlük sisteminden ya da bir veritabanı için bir soket veya bir dosyaya Kaydet.

Sen-cekti cephe tasarım modelini kullanma "gizle" mevcut tüm ilişkiler işlevi, bir tek arkasında "arayüz" cephesi ortaya çıkaran kişi.

İstemci kodu:

 Logger logger = new Logger();
 logger.initLogger("someLogger");
 logger.debug("message");

Bu uygulama birçok nesnelerin etkileşimi içerebilir. Ama sonunda, işlevsellik zaten var. Muhtemelen "hata ayıklama" yöntemi aşağıdaki gibi uygulanır

Uygulama:

 class Logger { 

      private LoggerImpl internalLogger;
      private LoggerManager manager;

      public void initLogger( String loggerName ) {
          this.internalLogger = manager.getLogger( loggerName ); 
      }

      public void debug( String message ) { 
          this.internalLogger.debug( message );
      }     
 }

Bu işlev zaten var. Cephe sadece bunu gizler. Bu varsayımsal durumda, LoggerManager doğru logger oluşturma işleme ve Loggerİmpl "" yöntem. hata ayıklama içeren paketi özel bir nesne. Bu şekilde Cephe sadece varolan bazı nesneler için delege olduğunu işlevselliği ekliyor.

Diğer yandan arabulucu farklı nesneleri birleştirerek yeni işlevler ekleyin.

Aynı İstemci kodu:

 Logger logger = new Logger();
 logger.initLogger("someLogger");
 logger.debug("message");

Uygulama:

 class Logger { 

      private java.io.PrintStream out;
      private java.net.Socket client;
      private java.sql.Connection dbConnection;
      private String loggerName;


      public void initLogger( String loggerName ) {
               this.loggerName = loggerName;
               if ( loggerName == "someLogger" ) { 
                    out = new PrintStream( new File("app.log"));
               } else if ( loggerName == "serverLog" ) { 
                    client = new Socket("127.0.0.1", 1234 );
               } else if( loggerName == "dblog") { 
                    dbConnection = Class.forName()... .
               }

      }

      public void debug( String message ) { 

               if ( loggerName == "someLogger" ) { 
                    out.println( message );
               } else if ( loggerName == "serverLog" ) { 
                    ObjectOutputStrewam oos = 
                           new ObjectOutputStrewam( client.getOutputStream());
                    oos.writeObject( message );
               } else if( loggerName == "dblog") { 
                    Pstmt pstmt = dbConnection.prepareStatment( LOG_SQL );
                    pstmt.setParameter(1, message );
                    pstmt.executeUpdate();
                    dbConnection.commit();
               }
      }
 }

Bu kod, arabulucu, iş mantığı "kanal" günlük ve aynı zamanda bu kanal içine. günlük yapmak için uygun oluşturmak için içeren bir O "" işlevleri oluşturuyor.

Elbette, daha iyi yolları vardır uygulamak için bu kullanarak polimorfizmi, ama konu burada göstermek nasıl arabulucu "ekler" yeni işlevselliği ile birleştirerek, mevcut fonksiyonlar ( benim örnek gelmedi çok üzgünüm ama hayal arabulucu, okuma veritabanı uzaktan (remote) için günlük, daha sonra oluşturur bir istemci ve nihayet yazmak için istemci yazdırma akışı günlük mesaj. Bu şekilde arabulucu "" farklı nesneler arasında. aracılık olurdu

Son olarakcepheyapısal bir model, bu süre nesneleri bileşimini açıklararabulucubir davranış, yani , nesneleri etkileşim yolu açıklar.

Bu yardımcı olur umarım.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Kyletiv7

    Kyletiv7

    28 Mayıs 2007
  • Mark Brown

    Mark Brown

    9 HAZİRAN 2010
  • Tips On Linux

    Tips On Linu

    26 Temmuz 2008

İLGİLİ SORU / CEVAPLAR