Skip to content

Instantly share code, notes, and snippets.

View Guilherme-HRamos's full-sized avatar
🏠
Working from home

Guilherme Henrique Guilherme-HRamos

🏠
Working from home
View GitHub Profile
@Guilherme-HRamos
Guilherme-HRamos / Logger.java
Created July 28, 2019 01:03
Medium - Android/Java Interfaces like a Boss! - Functional Interface
@FunctionalInterface
public interface Logger {
void logMessage(String message);
}
@Guilherme-HRamos
Guilherme-HRamos / OpenFileHelper.java
Last active July 28, 2019 00:50
Medium - Android/Java Interfaces like a Boss! - Markers (Usage)
public class OpenFileHelper {
private final Logger myLogger;
public OpenFileHelper() {
// logs strategies
SystemsLogger systemsLogger = new SystemsLoggerImpl();
LogCatLogger logCatLogger = new LogCatLoggerImpl("OpenFileHelper");
// log manager
@Guilherme-HRamos
Guilherme-HRamos / LoggerDispatcher.java
Created July 28, 2019 00:40
Medium - Android/Java Interfaces like a Boss! - Markers (Facade)
public class LoggerDispatcher implements Logger {
private final List<Logger> loggerList = new ArrayList<>();
public LoggerDispatcher(Logger... loggers) {
Collections.addAll(loggerList, loggers);
}
@Override
public void logMessage(String message) {
@Guilherme-HRamos
Guilherme-HRamos / LogCatLogger.java
Last active July 28, 2019 00:31
Medium - Android/Java Interfaces like a Boss! - Markers (Interfaces)
public interface LogCatLogger extends Logger {
}
@Guilherme-HRamos
Guilherme-HRamos / Presenter.java
Last active July 27, 2019 22:43
Medium - Android/Java Interfaces like a Boss! - Contracts interfaces
public interface Presenter {
void onUpdateAccount(String newName, String newEmail);
void onRemoveAccount();
}
@Guilherme-HRamos
Guilherme-HRamos / MainActivity.java
Last active July 27, 2019 22:41
Medium - Android/Java Interfaces like a Boss! - Contracts implementations (View)
public class MainActivity extends AppCompatActivity implements ViewContract {
private AccountManagerPresenter presenter;
private Button updateAccountButton;
private Button removeAccountButton;
private EditText nameInput;
private EditText emailInput;
@Override
@Guilherme-HRamos
Guilherme-HRamos / MainPresenter.java
Last active July 27, 2019 22:40
Medium - Android/Java Interfaces like a Boss! - Contracts implementations (Presenter)
public class AccountManagerPresenterImpl implements AccountManagerPresenter {
private final ViewContract viewContract;
public MainPresenter(ViewContract viewContract) {
this.viewContract = viewContract;
}
@Override
public void onUpdateAccount(String newName, String newEmail) {
@Guilherme-HRamos
Guilherme-HRamos / ButtonConfigHelper.java
Last active July 1, 2019 03:36
Medium - Android/Java Interfaces like a Boss! - Listeners pt l
public class ButtonConfigHelper implements View.OnClickListener {
// Exemplo do Listener como classe anônima
private void setupClick(Button button) {
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
logMessage("setupClick() called");
}
});
@Guilherme-HRamos
Guilherme-HRamos / OpenLogFileActivity.java
Last active July 1, 2019 01:44
Medium - Android/Java Interfaces like a Boss! - Callbacks pt ll
public class OpenLogFileActivity extends AppCompatActivity {
// some Activity code here
private void onOpenLogButtonClick() {
// Usando uma classe anônima como Callback
new OpenFileHelper("home/log.txt", new OpenFileHelperCallback() {
@Override
public void onFileOpenSuccess(File file) {
// do something with file
@Guilherme-HRamos
Guilherme-HRamos / InterfaceInheritance.java
Created June 30, 2019 21:21
Medium - Android/Java Interfaces like a Boss! - Interface inheritance examples
// Interface usada na herança
interface ParentInterface {
void firstMethod();
void secondMethod();
}
// Interface derivada de ParentInterface
interface ChildInterface extends ParentInterface {
// Herança
// 1.Não é necessário sobrescrever os métodos herdados de