Siempre que escucho sobre Anti- patrones, recuerdo otro término a saber. Olor de diseño .
"olores de diseño son ciertas estructuras en el diseño que indican violación de los principios fundamentales de diseño e influir negativamente en la calidad del diseño” (De 'Refactoring de Diseño de Software Olores: La gestión de la deuda técnica')
Hay muchos olores de diseño clasifican sobre la base de que viola los principios de diseño:
Abstracción huele
Missing Abstracción: surge Este olor cuando grupos de datos o str codificada Los registros se usan en lugar de crear una clase o una interfaz.
Imperativo Abstracción: Este olor surge cuando una operación se convierte en una clase.
Abstracción incompleta: Este olor surge cuando una abstracción no admite métodos complementarios o interrelacionados por completo.
Abstracción multifacética: Este olor surge cuando una abstracción tiene asignada más de una responsabilidad.
Abstracción innecesaria: Este olor se produce cuando una abstracción que en realidad no es necesaria (y por lo tanto podría haberse evitado) se introduce en un diseño de software.
Abstracción no utilizada: Este olor surge cuando una abstracción no se utiliza (no se usa directamente o no se puede acceder).
Abstracción duplicada: Este olor surge cuando dos o más abstracciones tienen nombres idénticos o implementación idéntica o ambas.
encapsulación huele
encapsulación Deficiente: Este olor se produce cuando la accesibilidad declarada de uno o más miembros de una abstracción es más permisiva que realmente se requiere.
Encapsulación con fugas: Este olor surge cuando una abstracción "expone" o "filtra" detalles de la implementación a través de su interfaz pública.
Encapsulación perdida: Este olor se produce cuando las variaciones de implementación no se encapsulan en una abstracción o jerarquía.
encapsulación no explotado: Este olor surge cuando el código de cliente utiliza los controles de tipo explícita (usando cadena si-else o conmutador declaraciones que comprueban para el tipo del objeto) en lugar de explotar la variación en los tipos ya encapsulados dentro de una jerarquía.
modularización huele
modularización Roto: surge Este olor cuando los datos y/o métodos que idealmente debería haber sido localizadas en un único abstracción se separan y se extienden a través de múltiples abstracciones.
Modularización insuficiente: Este olor surge cuando existe una abstracción que no se ha descompuesto completamente, y una descomposición adicional podría reducir su tamaño, complejidad de implementación o ambas.
Modularización cíclicamente dependiente: Este olor surge cuando dos o más abstracciones dependen una de la otra directa o indirectamente (creando un estrecho acoplamiento entre las abstracciones).
Modularización de Hub-like: Este olor surge cuando una abstracción tiene dependencias (tanto entrantes como salientes) con una gran cantidad de otras abstracciones.
Jerarquía huele
Jerarquía Missing: surge Este olor cuando un segmento de código utiliza la lógica condicional (típicamente en conjunción con “etiquetado tipos”) para administrar explícitamente variación en el comportamiento donde podría haberse creado una jerarquía y se usa para encapsular esas variaciones.
Jerarquía innecesaria: Este olor surge cuando la jerarquía de herencia completa no es necesaria, lo que indica que la herencia se ha aplicado innecesariamente para el contexto de diseño particular.
Jerarquía no modificada: Este olor surge cuando hay una duplicación innecesaria entre los tipos en una jerarquía.
Gran jerarquía: Este olor surge cuando una jerarquía de herencia es "demasiado" amplia, lo que indica que pueden faltar tipos intermedios.
Jerarquía especulativa: Este olor surge cuando uno o más tipos en una jerarquía se proporcionan especulativamente (es decir, en función de las necesidades imaginarias en lugar de los requisitos reales).
Jerarquía profunda: Este olor surge cuando una jerarquía de herencia es "excesivamente" profunda.
Jerarquía rebelde: Este olor surge cuando un subtipo rechaza los métodos provistos por su (s) su (s) tipo (s).
Jerarquía rota: Este olor surge cuando un supertipo y su subtipo conceptualmente no comparten una relación "IS-A" que da como resultado una sustituibilidad rota.
Jerarquía de múltiples rutas: Este olor surge cuando un subtipo hereda tanto directa como indirectamente de un supertipo que conduce a rutas de herencia innecesarias en la jerarquía.
Jerarquía cíclica: Este olor surge cuando un supertipo en una jerarquía depende de cualquiera de sus subtipos.
La definición y la clasificación anterior se describe en "Refactoring for software design smells: Managing technical debt". Algunos recursos más relevantes podrían ser encontrados here.
https://sourcemaking.com/antipatterns – jaco0646
http://martinfowler.com/bliki/AntiPattern.html – jaco0646