Наследование выявляет отношение IS-A. Композиция выявляет связь HAS-A. Шаблон Statergy объясняет, что композиция должна использоваться в тех случаях, когда существуют семейства алгоритмов, определяющих конкретное поведение. Классический пример - тип утки, который реализует поведение мух.
public interface Flyable{
public void fly();
}
public class Duck {
Flyable fly;
public Duck(){
fly=new BackwardFlying();
}
}
Таким образом, мы можем иметь несколько классов которые реализуют полет, например:
public class BackwardFlying implements Flyable{
public void fly(){
Systemout.println("Flies backward ");
}
}
public class FastFlying implements Flyable{
public void fly(){
Systemout.println("Flies 100 miles/sec");
}
}
Если бы для наследования у нас было бы два разных класса птиц, которые снова и снова реализуют функцию мух. Это наследование и состав совершенно разные.
Вы можете выполнить эту команду:
mvn -DgroupId=com.android.tools.build -DartifactId=gradle -Dversion=2.3.0 -DremoteRepositories="http://repo1.maven.org/maven2" dependency:get
Она будет извлекать ваши зависимости из информированного хранилища. JAR-файлы будут загружены в ваш местный репозиторий Maven.
Документы о dependency:get
зависимости: get можно найти здесь .
К сожалению, я не смог найти никакой опции для этого плагина, чтобы указать выходной каталог для всех артефактов, я пробовал опцию -DoutputDirectory
, но она не работает для этого плагина.
Тогда я бы предложил временно изменить путь вашего localRepository
в Maven settings.xml
на новую папку, в которой будут храниться загруженные файлы JAR:
<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository
-->
<localRepository>DOWNLOADED_JARS_OUTPUT_FOLDER</localRepository>