12. What is dependency injection
● Every application have a kind of dependency injection.
● Model need an other model
Post
message
Message
API
HTTP
Client
Before
13. What is dependency injection
public class HttpClient {
public HttpClient(){
}
public void execute(Request request) {
//TODO: send request
}
}
Before
14. What is dependency injection
public class MessageApi {
private HttpClient httpClient;
public MessageApi(HttpClient httpClient){
this.httpClient = httpClient;
}
public void sendMessage(String user, String message){
httpClient.execute(new Request(user, message));
}
}
Before
15. What is dependency injection
public class SendMessage {
private MessageApi messageApi;
private String user;
public SendMessage(MessageApi messageApi, String user) {
this.messageApi = messageApi;
this.user = user;
}
public void send(String message){
messageApi.sendMessage(user, message);
}
}
Before
16. What is dependency injection
HttpClient httpClient = new HttpClient();
MessageApi messageApi = new MessageApi(httpClient);
SendMessage sendMessage = new SendMessage(messageApi,
"user");
sendMessage.send("Hello");
Before
17. What is dependency injection
Post
message
Message
API
HTTP
Client
Post
message
18. What is dependency injection
Post
message
Message
API
HTTP
Client
Post
message
19. Dagger 2
● Developped by Google
● Work with proguard
● Fast
● Low configurations
● Multiple injection type
○ Constructor
○ Field
○ Method
Now
20. Module
● Class hold all dependencies
● Work with a Component
● Bridge between Module and
Injection
@Module
public class MessageModule {
@Provide
@Singleton
HttpClient provideHttpClient(){
return new HttpClient();
}
@Provide
@Singleton
MessageApi provideMessageApi(HttpClient httpClient){
return new MessageApi(httpClient);
}
@Provide
SendMessage
provideSendMessage(MessageApi messageApi){
return new SendMessage(messageApi, "User");
}
}
Now
57. What is kotlin
● Programing language
● Interoperable
● Concise
● Safe
● Versatile
58. What does it look like
class Greeter(val name: String) {
fun greet() {
println("Hello, $name")
}
}
fun main(args: Array<String>) {
Greeter(args[0]).greet()
}
60. Kotlin over java
Null safety:
b?.length
Data class:
data class User(val name: String, val age: Int)
61. Kotlin over java
Null safety:
b?.length
Data class:
data class User(val name: String, val age: Int)
Smart cast:
fun demo(x: Any) {
if (x is String) {
print(x.length) }
}