Skip to content

Java

Singleton

Singleton Design Pattern Logo


Singleton é um design pattern criacional que garante que uma classe possua uma única instância e define um ponto de acesso global para ela.

Introdução

Algumas vezes faz sentido que em um sistema exista apenas uma única instância de uma certa classe, por exemplo, arquivos de configurações que leia propriedades de um único arquivo, ou para enviar arquivos à uma impressora.

Mesmo que o Singleton pareça ser um dos patterns mais populares e um dos mais fáceis de se implementar, ainda existem algumas funcionalidades do Java como concorrência e serialização que podem deixar algumas brechas na implementação do pattern, brechas estas que precisamos cobrir para garantir que nossas instâncias do Singleton são realmente, únicas.

Dito isso, este post não será apenas “mais um rápido tutorial sobre Singleton”, mas irá mostrar como escrever um código realmente aderente ao contrato do pattern, tanto usando uma classe Java comum quanto sua versão alternativa com enum.

Read More »Singleton

Singleton

Singleton Design Pattern Logo


Singleton is a creational design pattern which ensures that a class has only one instance and provides a global point to access it.

Introduction

Sometimes it makes sense in a system to have just only one instance of a certain class, e.g. configuration classes that read properties from a unique file or hardware access to send files to a printer.

Although Singleton seems to be one of the most popular patterns and yet, one of the easiest to implement, there are still certain features of the Java language like concurrency and serialisation, that may create some pitfalls in the pattern implementation, pitfalls we have to cover in order to rest assured that our Singleton instances are really singular.

That said, this post is not going to be “just yet another Singleton quick tutorial”, it is going to show how to safely write a piece of code that properly adheres to the pattern’s contract, both using a regular Java class and an alternative implementation using an enum.

Read More »Singleton

Abrir conexão SSH no Linux

shell para abrir conexão SSH no Linux


Este tutorial irá mostrar como abrir conexão SSH no Linux diretamente no console, sem precisar utilizar um programa de terceiros como o Putty.

Já vi algumas pessoas dependendo de uma instalação do Putty no Ubuntu e/ou CentOS para acessar um servidor remoto através de SSH, porém mesmo que eu ache o Putty um ótimo software, sua utilização não é necessária se você estiver em ambientes Linux.

Read More »Abrir conexão SSH no Linux

Null Object

Null Object Design Pattern logo

Null Object é um design pattern comportamental baseado em herança que cria representações válidas de objetos null em um sistema, de modo a evitar que se retorne um null quando um objeto é esperado, por consequência, gerando null checks para evitar que exceções NullPointerException sejam lançadas e comportamentos inesperados sejam apresentados.

Introdução

É comum escrever métodos que retornem null em situações onde a informação requisitada não está presente ou algumas condições não são atendidas para executar um determinado trecho de código. Entretanto, as vezes este tipo de comportamento é mal documentado e acaba pegando outros desenvolvedores de surpresa quando estes decidem utilizar uma API, além disso, isto pode forçar tais desenvolvedores a escreverem inúmeros null checks a fim de evitar exceções de runtime.

De qualquer modo, o código da aplicação pode se tornar pouco coeso e pouco limpo, pois agora aquele trecho de código também precisa lidar com as situações onde um null é possível, tendo assim que tomar decisões que inicialmente não seriam de sua responsabilidade.

O design pattern Null Object vem para trabalhar neste problema, de um modo que basicamente, ao invés de simplesmente retornar um null onde um objeto da classe Foo era esperado, ele retorna um objeto que é subclasse de Foo em um estado válido para ser utilizado em tempo de execução, aderindo ao contrato de Foo.

Read More »Null Object