gradle init

gradle init --type java-library

Obsługiwane: ‚basic’, ‚groovy-library’, ‚java-library’, ‚pom’, ‚scala-library’.

Reklamy

EJB: Singleton ConcurrencyManagement

Tylko jeden watek równocześnie może mieć dostęp do instancji beana oznaczonego @Singleton.
Anotacja @ConcurrencyManagement(ConcurrencyManagementType.BEAN) deaktywuje to ograniczenie i singleton staje sie dostępny dla wielu wątków.

źródło: http://www.e-zest.net/blog/caching-with-periodic-updates-using-ejb-3-1-singleton-and-timer/
źródło: http://www.adam-bien.com/roller/abien/entry/singleton_the_perfect_cache_facade

Wzorce projektowe: strategy

Strategia jest czynnościowym wzorcem obiektowym. Wzorzec składa się z wielu związanych ze sobą algorytmów ukrytych wewnątrz klasy sterującej zwanej Context.

Bardzo łatwo dodaje się nowe algorytmy, poprzez utworzenie nowej klasy implementującej dany interfejs. Conext może w danej chwili mieć wybraną tylko jedną strategię.

package pl.roboczenotatki.designpatterns.strategy;

public interface Vehicle {
	public void makeSound();
}

package pl.roboczenotatki.designpatterns.strategy;

public class Car implements Vehicle{

	@Override
	public void makeSound() {
		System.out.println("Brum from car");
	}
}

package pl.roboczenotatki.designpatterns.strategy;

public class Bus implements Vehicle{

	@Override
	public void makeSound() {
		System.out.println("Brum from bus");
	}
}

package pl.roboczenotatki.designpatterns.strategy;

import java.util.Calendar;

public class App {
	public static void main(String[] args) {
		System.out.println("Design pattern: Strategy");

		Vehicle vehicle = null;
		switch (Calendar.DAY_OF_WEEK) {
		case Calendar.SATURDAY:
		case Calendar.SUNDAY:
			vehicle = new Car();
			break;
		default:
			vehicle = new Bus();
			break;
		}

		vehicle.makeSound();

	}
}

Diagram:
strategy

Wzorce projektowe: Simple Factory

Simple factory jest jednym z wzorców konstrukcyjnych, których zadaniem jest tworzenie obiektów. Wzorzec ten charakteryzuje się tym, że caly proces decyzyjny i konstrukcyjny jest w jednej metodzie.

package pl.roboczenotatki.designpatterns.simpleFactory;

public enum Animal {
	RABBIT, WOLF, BOAR;
}

package pl.roboczenotatki.designpatterns.simpleFactory;

public interface WildAnimal {
	public void showName();
}

package pl.roboczenotatki.designpatterns.simpleFactory;

public class Rabbit implements WildAnimal {

	@Override
	public void showName() {
		System.out.println("I'm rabbit");
	}
}

package pl.roboczenotatki.designpatterns.simpleFactory;

public class Wolf implements WildAnimal {
	@Override
	public void showName() {
		System.out.println("I'm wolf");
	}
}

package pl.roboczenotatki.designpatterns.simpleFactory;

public class Boar implements WildAnimal{

	@Override
	public void showName() {
		System.out.println("I'm boar");
	}
}

package pl.roboczenotatki.designpatterns.simpleFactory;

/** Zastosowano tutaj rowniez wzorzec Singleton */
public class AnimalFactory {
	private static AnimalFactory INSTANCE;

	private AnimalFactory(){}

	public static AnimalFactory getInstance(){
		if(INSTANCE == null){
			INSTANCE = new AnimalFactory();
		}
		return INSTANCE;
	}

	public WildAnimal createWildAnimal(Animal animal){
		switch (animal) {
		case RABBIT:
			return new Rabbit();
		case WOLF:
			return new Wolf();
		default:
			return new Boar();
		}
	}
}

package pl.roboczenotatki.designpatterns.simpleFactory;

public class App
{
    public static void main( String[] args )
    {
    	System.out.println( "Design pattern: Simple factory" );

    	WildAnimal wildAnimal = AnimalFactory.getInstance().createWildAnimal(Animal.RABBIT);
    	wildAnimal.showName();
    }
}