Is it a good approach to solve this?
Beh, probabilmente non è un buon modo, ma la tua unica scelta ragionevole per risolverlo nella situazione data. Ma aspettati che succeda di nuovo quando verranno rilasciate la versione V3, V4, V5, ... di lib A1 - finché non prenderai ulteriori misure, avrai sempre lo sforzo di unire le modifiche di A2 nel codice di A1. Se A2 differisce solo leggermente da A1, e le modifiche sono ben documentate, potrebbe andare bene. Può anche essere utile l'uso corretto di un sistema di controllo della versione o almeno uno strumento diff-merge per generare un set di patch per A1- > A2 (almeno, quando A1 non cambia da versione a versione così tanto che la patch- set non può più essere applicato).
L'alternativa migliore sarebbe quella di contattare l'autore di A1 in anticipo e chiedergli gentilmente se può cambiare A1 in un modo che non ti servirà più in futuro. Potrebbe prendere in considerazione l'integrazione di alcune delle funzionalità aggiuntive di A2 o (se ciò non è ragionevole) per modificare l'interfaccia di A1 in un modo tale da consentire l'aggiunta di estensioni senza la necessità di modificare A1. L'obiettivo dovrebbe essere quello di creare A2 come libreria separata che collega semplicemente A1, non modificata. Forse può fornire un meccanismo "hook" o "plug-in", o forse semplicemente rendere pubblici alcuni metodi interni, questo dipende completamente dal design di A1 e dai tuoi requisiti per A2.