Właśnie znalazłem article sprawie ram w Javie, który najwyraźniej pozwala na obsługę Mixins i coś o nazwie Composite Oriented Programming (która o ile wiem nawet może być to samo ...) Ja również słyszałem o/współpracował z AOP, i nie jestem pewien, jak to się różni od tego ...Jaka jest różnica między klasą abstrakcyjną a mieszanką?
Odpowiedz
Na poziomie językowo-agnostycznym, mixin po prostu dodaje funkcjonalność do klasy, i jest bardziej dla wygody programisty i uniknięcia duplikacji kodu. Klasa abstrakcyjna (podstawowa) tworzy relację is-a i pozwala na polimorfizm. Jednym z powodów, dla których dziedziczenie jest nadużywane, jest to, że jest to łatwy sposób na implementowanie mixinów bez pisania jakiegokolwiek schematu w językach, które tak naprawdę ich nie wspierają. Problemem jest to, że jesteś deklarowania jest polimorficzny-relacja jako efekt uboczny, dzięki czemu API bardziej kłopotliwe i ewentualnie dodanie niejasności. Stąd nowe języki, takie jak D i Ruby wstawek wsparcia jako natywnych funkcji, umożliwiając wygodny sposób dodać kilka funkcji do klasy bez deklarowania polimorficzny oznacza związek.
Mixin nigdy nie jest rozumiany jako samodzielna klasa. Dodają tylko niektóre funkcje do zadeklarowanej klasy. W języku Python można je łatwo zastosować do dekoratorów klas. Na przykład możesz udekorować swoją klasę za pomocą Singleton mixin, dzięki czemu twoja klasa będzie singletonem.
- 1. Jaka jest różnica między klasą abstrakcyjną a interfejsem?
- 2. Jaka jest różnica między klasą Debug a klasą Trace?
- 3. Różnica między klasą APIView a klasą viewsets?
- 4. Różnica między klasą singleton a klasą statyczną?
- 5. jaka jest różnica między const, readonly a statyczną klasą
- 6. Różnica między rodzicielską klasą a super klasą
- 7. AngularJS, różnica między klasą ng a klasą z wyrażeniem kątowym?
- 8. Jaka jest różnica między klasą int.class a klasą Integer.TYPE w języku Java?
- 9. Jaka jest różnica między klasą Class.This a klasą Java w języku Java?
- 10. Jaka jest różnica między klasą z prywatnym konstruktorem a klasą szczelną mającą prywatny konstruktor?
- 11. Jaka jest różnica między klasą clazz a klasą <?> clazz w java?
- 12. jaka jest różnica między klasą i danych: dataType
- 13. Różnica między klasą enum a enum?
- 14. Jaka jest różnica między cat_id a term_id?
- 15. Jaka jest różnica między IEnumerable a tablicami?
- 16. Jaka jest różnica między == a === w Verilog?
- 17. Jaka jest różnica między UseCase a Workflow?
- 18. Jaka jest różnica między pakietem a intencją?
- 19. Jaka jest różnica między węzłem a wierzchołkiem?
- 20. Jaka jest różnica między Ember.computed.alias a Ember.binding?
- 21. Jaka jest różnica między alertem a window.alert?
- 22. Jaka jest różnica między @android a android:
- 23. Jaka jest różnica między krotką a kompresją?
- 24. Jaka jest różnica między proxy a reify?
- 25. Jaka jest różnica między @Inject a @PersistenceContext?
- 26. Jaka jest różnica między sqlite3 a pdo_sqlite
- 27. Jaka jest różnica między Const a Constant?
- 28. Jaka jest różnica między Socket.IO a Firebase?
- 29. Jaka jest różnica między macierzą a tablix?
- 30. Jaka jest różnica między KERN_INVALID_ADDRESS a KERN_PROTECTION_FAILURE?
+1 Dobre krótkie wyjaśnienie. Te rzeczy COP brzmią fajnie. Chociaż lubię widzieć takie rzeczy, idą w dół do poziomu podstawowego języka. To samo z rzeczami AOP. – BuddyJoe
@Bruno Podstawowy język, taki jak C++? – leeand00
zwięzłe i bardzo jasne. Niesamowite wytłumaczenie! – Hugo