Monday 11 September 2017

Jforex Stato Ordine Immutabile


Sento spesso il termine Stateless e immutabile. Ad esempio, HTTP è un protocollo stateless, e un oggetto String è un oggetto immutabile. Ma ho un momento difficile cogliere la differenza tra i due. Quando creo un oggetto senza stato, si pretende molto memorizzare i dati di stato internamente. E se creo un oggetto immutabile, significa la sua non cambierà mai. Doesnt che significa la stessa cosa Poiché l'immutabile cambiamento oggetto pretende molto, per definizione, non può avere uno stato. E 'quello che è per sempre. E se un oggetto doesnt hanno stato, non può essere mutato (per definizione). Così, arent tutti gli oggetti senza stato oggetto immutabile e immutabile apolidi Quale potrebbe essere un esempio di oggetto senza stato mutabile o immutabile oggetto stateful Come può un oggetto avere alcun Stato anche se si crea un'istanza l'oggetto più semplice, esso ha qualche stato. L'oggetto più semplice che si possa immaginare in Java, per esempio, avrà contengono stato. Il riferimento alla sua classe tra le altre cose. E 'anche possibile per ottenere un oggetto veramente senza stato in qualsiasi lingua ndash toniedzwiedz 28 Gennaio 16 anni al 09:24 Il contesto è importante e ci sono due concetti non correlati qui. HTTP è un protocollo stateless significa che ogni richiesta non ha alcuna conoscenza implicita di altre richieste. incluso qualsiasi precedente richiesta inviata dal cliente stesso. Questo è diverso da un protocollo come FTP o SMTP in cui viene stabilita una connessione e quindi diversi comandi vengono inviati - ogni commandrequest è associato alla stessa clientconnection. Naturalmente statetracking si aggiunge di nuovo via. biscotti e monitoraggio URI, e anche il pipelining - ma il punto è che ogni richiesta è nuovo e distinto nel protocollo HTTP. String è un oggetto immutabile significa che quel particolare dato oggetti saranno sempre identico a quello che è ora in tutti i modi osservabile (questo implica anche che gli attributi osservabili smussano essere modificati). Alcuni puristi potrebbero sostenere che essa ha implicazioni più profonde di questo, ma in praticità è è sugli attributi osservabili - la questione diventa più complicata quando gli oggetti immutabili possono contenere oggetti mutabili. (E sì, dal tecnicismo, un oggetto senza dati consentito - o stato - sopraelevazione essere aggiornate e sono quindi immutabile Tuttavia, ancora una volta, il contesto è importante e la sua strana per parlare di Zanne su un elefante o un tronco in una tigre.. ) Edit: Differenza tra i due un oggetto che non ha stato è senza stato. Tutti gli oggetti senza stato sono immutabili (perché non c'è nulla di mutare) questo è un technicallity tautologico. Un oggetto può avere stato ed essere ancora immutabile - tuttavia, un oggetto con lo stato (immutabile o in altro modo) non può più essere considerato apolide. Come da commento alla risposta collegato. un oggetto immutabile ha esattamente uno stato, lo stato iniziale. LaurentBourgault-Roy Un oggetto che non ha stato è senza stato. Tutti gli oggetti senza stato sono immutabili (perché non c'è nulla di mutare) questo è un technicallity tautologico. Un oggetto può avere stato ed essere ancora immutabile - tuttavia, un oggetto con lo stato (immutabile o in altro modo) non può più essere considerato apolide. Come da commento alla risposta legata: quotan oggetto immutabile ha esattamente un statequot, lo stato iniziale. ndash user166390 19 12 ottobre a 20:04 Ah, vedo ora. Sarebbe corretto dire che gli oggetti senza stato sono un sottoinsieme di oggetti immutabili, con la stessa proprietà interessante (può essere utilizzato in modo sicuro in codice threaded, garantito di non cambiare in futuro, ecc), ma con alcune caratteristiche aggiuntive di loro ( come un metodo chiamato su qualsiasi istanza della stessa classe è garantito per restituire sempre lo stesso risultato, dal momento che il loro non è stato per influenzare l'esito) ndash Laurent Bourgault-Roy 19 12 ottobre a 22:34 Essi non sono assolutamente la stessa. oggetti immutabili sono i mai cambiato. Lo stato di oggetti immutabili non viene mai modificata, aliasing oggetti immutabili è innocuo e nessun controllo di alias è necessaria per gli oggetti immutabili, anche se il controllo alias può essere necessaria per dimostrare che gli oggetti sono in realtà immutabile. E senza stato significa che non c'è stato. HTTP è chiamato un protocollo stateless perché ogni comando viene eseguito in modo indipendente, senza alcuna conoscenza dei comandi che l'hanno preceduta. Si basa su una richiesta paradigma. In questo protocollo la comunicazione avviene generalmente tramite un protocollo TCPIP. risposto 19 ottobre 12 in 19:17 Id dicono che è la stessa cosa, in alcuni contesti, ma ci concentriamo su un po 'diversi aspetti. Quando la gente dice che apolidi significa che ha alcuno stato, mi fa ridere. Naturalmente ha qualche stato da qualche punto di vista, ad esempio servizio senza stato può essere sostenuta da grafico complesso di oggetti (iniezione di dipendenza). La cosa è protocollo di rete ha un significato leggermente diverso dello stato: è una cosa che dipende da requestresponse precedente. Ma il servizio immutabile doesnt dipendono precedente chiama anche, per definizione. doesnt Stateless sempre legato a HTTP-protocollo, lo stesso termine che possiamo usare per sostenere setter in oggetti del servizio nel codice OOP lucido. E qui si può vedere che questi due termini sono gli stessi di fatto: il servizio immutabile è un servizio senza stato e viceversa. Tuttavia, la sua imbarazzante per me di chiamare un oggetto senza stato oggetto di valore. Sembra terribile. Recap: in caso di servizi (rete o OOP, importa doesnt) Id dire questi termini sono intercambiabili. Non importa quante volte abbiamo chiamato logWarning o logError e l'ordine delle chiamate non importa troppo. Così, si può chiamare il servizio senza stato. Ma questo servizio è inoltre non ha setter ed eventuali mutators come changeFileName () - si tratta di un serviceobject immutabile. Mutevolezza rende oggetto stateful. marche stateful oggetto mutabile. Questi termini sono interdipendenti nel contesto di oggetti services. Immutable sono oggetti semplicemente il cui stato (i Data Objects) non può cambiare dopo la costruzione. Esempi di oggetti immutabili dal JDK includono String e Integer. oggetti immutabili semplificano notevolmente il vostro programma, dal momento che: sono semplici da costruire, testare e uso sono automaticamente thread-safe e hanno dont no problemi di sincronizzazione bisogno di un costruttore di copia non hanno bisogno di una implementazione di clone permette hashCode di usare l'inizializzazione differita. e mettere in cache il suo valore di ritorno non hanno bisogno di essere copiati sulla difensiva quando viene utilizzato come un campo di fare buone chiavi Mappa ed insieme di elementi (questi oggetti non devono cambiare stato, mentre nella collezione) hanno la loro classe invariante stabilito una volta su di costruzione, e non è mai bisogno di un'ulteriore verifica sempre hanno mancato atomicità (un termine usato da Joshua Bloch): se un oggetto immutabile genera un'eccezione, la sua non ha mai lasciato in uno stato indesiderabile o indeterminato oggetti immutabili hanno una lista molto convincente di qualità positive. Senza dubbio, sono tra i più semplici e più robusti tipi di classi si può eventualmente costruire. Quando si creano le classi immutabili, intere categorie di problemi semplicemente disappear. Make una classe immutabile seguendo queste linee guida: assicurare la classe non può essere ignorata - rendere il finale di classe. o utilizzare le fabbriche statici e mantenere i costruttori marca privata campi chiamanti forza private e finali per costruire completamente un oggetto in un unico passaggio, invece di utilizzare un costruttore senza argomenti in combinazione con le chiamate successive a setXXX metodi (cioè, di evitare la convenzione Java Beans) non forniscono alcun metodo che può cambiare lo stato dell'oggetto in alcun modo - non solo metodo setXXX, ma un metodo che può cambiare lo stato se la classe ha tutti i campi degli oggetti mutabili, allora devono essere difensivo copiato quando passano tra la classe e il suo chiamante In Effective Java. Joshua Bloch rende questo interessanti recommendation. Classes dovrebbero essere immutabili se non ce n'è una buona ragione per farli mutevole. Se una classe non può essere fatto immutabile, limitare la sua mutevolezza quanto possibile. La sua interessante notare che BigDecimal non è tecnicamente immutabile, dal momento che la sua non è definitiva. Si noti che javadoc 1.4 include l'opzione - tag, per cui possono essere definiti semplici tag personalizzati. Si potrebbe definire un tag is. Immutable, per esempio, per documentare una classe come immutabile. Si potrebbe anche prendere in considerazione la definizione la propria interfaccia tag per gli oggetti immutabili. Volete usare questa copia tecnica 2017 Hirondelle Sistemi Source Code contatto Licenza RSS I singoli frammenti di codice possono essere utilizzati ai sensi della presente licenza BSD - Ultimo aggiornamento 21 settembre 2013. Oltre 2.000.000 IP unici lo scorso anno - Costruito con WEB4J. - In memoriam. Bill Dirani -

No comments:

Post a Comment