/**
 * {@link <a href=
 * "https://[Log in to view URL]"
 * target= "_blank"></a>}
 * 
 * @author itammb ( Italia Massimiliano Buscati )
 * @version JDK 1.15
 *
 */
class Main {
	public static interface Chair {
		public void sitOn();
	}

	public static interface CoffeTable {
		public void restOn();
	}

	public static interface FornitureFactory {
		public Chair createChair();

		public CoffeTable createCoffeTable();
	}

	public static class VictorianChair implements Chair {
		// implementazione prodotto
		public void sitOn() {
			System.out.println("VictorianChair []");
		}
	}

	public static class VictorianCoffeTable implements CoffeTable {
		// implementazione prodotto
		public void restOn() {
			System.out.println("VictorianCoffeTable []");
		}
	}

	public static class VictorianFactory implements FornitureFactory {
		// implementazione relazioni: abstract factory
		public Chair createChair() {
			return new VictorianChair();
		}

		public CoffeTable createCoffeTable() {
			return new VictorianCoffeTable();
		}
	}

	public static class FornitureStyle {
		// classe init
		private final FornitureFactory fornitureFactory;

		public FornitureFactory getFornitureFactory() {
			return fornitureFactory;
		}

		public FornitureStyle(FornitureFactory fornitureFactory) {
			super();
			this.fornitureFactory = fornitureFactory;
		}
	}

	public static void main(String args[]) {
		// Unit test - uso del design pattern: abstract factory
		
		FornitureStyle fornitureStyle = new FornitureStyle( new VictorianFactory() );
		
		fornitureStyle.getFornitureFactory().createChair().sitOn();
		fornitureStyle.getFornitureFactory().createCoffeTable().restOn();
	}
}

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: