Un breve análisis de los patrones de diseño de fábricas
Primero definamos una interfaz para que el producto acceda a los datos, que servirá como especificación para los tres tipos de almacenamiento de datos.
Los métodos de acceso abstracto de los tipos de datos String, int y boolean se definen arriba, y se pueden ampliar aquí. Luego definimos clases de implementación para tres tipos de almacenamiento de datos:
El MemoryHandler anterior hereda de ISaveHandler e implementa el almacenamiento en caché de memoria LruCache.
El SharedPreferenceHandler anterior hereda de ISaveHandler e implementa el almacenamiento en caché de SharedPreference. También hay un caché de disco que no se puede escribir y aquellos que estén interesados pueden expandirlo ellos mismos. Este artículo explica principalmente el patrón de diseño de fábrica. Comencemos escribiendo una fábrica simple, realmente simple. Una fábrica tiene una declaración de cambio:
Lo anterior es generar el objeto de almacenamiento correspondiente a través del tipo de enumeración pasado. Sin más preámbulos, echemos un vistazo al uso:
La ventaja de este patrón de método de fábrica de tipos de enumeración es que está muy claro que hay muy pocos tipos y no hay tantas formas indirectas. La desventaja es que cuando es necesario ampliar el tipo de almacenamiento de datos (tipo de producto), es necesario cambiar la fábrica. Echemos un vistazo al segundo: el patrón del método de fábrica.
Dije al principio que el patrón del método de fábrica consta de dos formas, una es la forma de múltiples fábricas y la otra es la forma de una sola fábrica.
Arriba vimos un método en fábrica que se utiliza para generar almacenamiento en forma de SharedPreference. Si desea generar otras formas de almacenamiento, vuelva a crear una fábrica correspondiente. Otras fábricas no lo publicarán aquí. De hecho, este método es más obvio, pero la desventaja también es obvia, es decir, hay muchos ladrones en la fábrica. Entonces echemos un vistazo a la forma sin fábrica.
Lo anterior es un objeto que obtiene el tipo de almacenamiento por tipo y luego lo refleja. Este patrón es similar a una fábrica simple, excepto que no es necesario mantener una clase de enumeración. Cuando necesite ampliar el método de almacenamiento de datos, solo necesita agregar el tipo de almacenamiento de datos y no necesita cambiar la fábrica. Este método debería ser el modelo de fábrica más utilizado. Echemos un vistazo breve a su uso:
De hecho, la fábrica abstracta es algo similar al modelo multifábrica de métodos de fábrica, lo cual es fácil de confundir. La diferencia entre los dos es que bajo el método de fábrica única, una fábrica solo puede producir un producto, mientras que bajo el método abstracto, una fábrica necesita producir un conjunto de productos. Por ejemplo, necesito una fábrica que pueda generar tanto objetos de almacenamiento de memoria como objetos SharedPreferece. Alternativamente, una fábrica podría producir tanto objetos de almacenamiento en memoria como objetos de almacenamiento en disco, etc. En el proceso de desarrollo real, si se utiliza esta fábrica abstracta, en términos generales, habrá una cierta relación entre los dos objetos que una fábrica puede producir. Por ejemplo, una fábrica de automóviles puede producir rodamientos y neumáticos al mismo tiempo, y ambos están estrechamente relacionados. Echemos un vistazo a la fábrica abstracta:
La fábrica anterior puede producir dos productos. Por supuesto, los dos productos del ejemplo anterior no están fuertemente relacionados. Como acabo de decir, cuando se utiliza este método de fábrica abstracto, habrá una cierta correlación entre los productos de una fábrica. Como los rodamientos y neumáticos de un coche. En términos relativos, en el desarrollo diario, el modelo del método de fábrica puede utilizarse más ampliamente.
Demostración: Fábrica