Abstract Factory Pattern
This commit is contained in:
18
design-pattern/src/AbstractFactory2/Main.java
Normal file
18
design-pattern/src/AbstractFactory2/Main.java
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
package AbstractFactory2;
|
||||||
|
|
||||||
|
import AbstractFactory2.abst.Button;
|
||||||
|
import AbstractFactory2.abst.GuiFactory;
|
||||||
|
import AbstractFactory2.abst.TextArea;
|
||||||
|
import AbstractFactory2.concrete.FactoryInstance;
|
||||||
|
|
||||||
|
public class Main {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
GuiFactory factory = FactoryInstance.getGuiFactory();
|
||||||
|
|
||||||
|
Button button = factory.createButton();
|
||||||
|
TextArea textArea = factory.createTextArea();
|
||||||
|
|
||||||
|
button.click();
|
||||||
|
System.out.println(textArea.getText());
|
||||||
|
}
|
||||||
|
}
|
||||||
6
design-pattern/src/AbstractFactory2/abst/Button.java
Normal file
6
design-pattern/src/AbstractFactory2/abst/Button.java
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
package AbstractFactory2.abst;
|
||||||
|
|
||||||
|
public interface Button {
|
||||||
|
|
||||||
|
void click();
|
||||||
|
}
|
||||||
7
design-pattern/src/AbstractFactory2/abst/GuiFactory.java
Normal file
7
design-pattern/src/AbstractFactory2/abst/GuiFactory.java
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
package AbstractFactory2.abst;
|
||||||
|
|
||||||
|
public interface GuiFactory {
|
||||||
|
|
||||||
|
Button createButton();
|
||||||
|
TextArea createTextArea();
|
||||||
|
}
|
||||||
5
design-pattern/src/AbstractFactory2/abst/TextArea.java
Normal file
5
design-pattern/src/AbstractFactory2/abst/TextArea.java
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
package AbstractFactory2.abst;
|
||||||
|
|
||||||
|
public interface TextArea {
|
||||||
|
String getText();
|
||||||
|
}
|
||||||
@@ -0,0 +1,97 @@
|
|||||||
|
package AbstractFactory2.concrete;
|
||||||
|
|
||||||
|
import AbstractFactory2.abst.Button;
|
||||||
|
import AbstractFactory2.abst.GuiFactory;
|
||||||
|
import AbstractFactory2.abst.TextArea;
|
||||||
|
|
||||||
|
public class FactoryInstance {
|
||||||
|
|
||||||
|
public static GuiFactory getGuiFactory() {
|
||||||
|
|
||||||
|
switch (getOsCode()) {
|
||||||
|
case 0: return new MacGuiFactory();
|
||||||
|
case 1: return new WinGuiFactory();
|
||||||
|
case 2: return new LinuxGuiFactory();
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static int getOsCode() {
|
||||||
|
if (System.getProperty("os.name").equals("Windows 10")){
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class LinuxButton implements Button {
|
||||||
|
@Override
|
||||||
|
public void click() {
|
||||||
|
System.out.println("Linux Button");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class LinuxGuiFactory implements GuiFactory {
|
||||||
|
@Override
|
||||||
|
public Button createButton() {
|
||||||
|
return new LinuxButton();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TextArea createTextArea() {
|
||||||
|
return new LinuxTextArea();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class LinuxTextArea implements TextArea {
|
||||||
|
@Override
|
||||||
|
public String getText() {
|
||||||
|
return "Linux TextArea";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class MacButton implements Button {
|
||||||
|
@Override
|
||||||
|
public void click() {
|
||||||
|
System.out.println("Mac button");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class MacGuiFactory implements GuiFactory {
|
||||||
|
@Override
|
||||||
|
public Button createButton() {
|
||||||
|
return new MacButton();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TextArea createTextArea() {
|
||||||
|
return new MacTextArea();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class MacTextArea implements TextArea {
|
||||||
|
@Override
|
||||||
|
public String getText() {
|
||||||
|
return "Mac TextArea";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class WinButton implements Button {
|
||||||
|
@Override
|
||||||
|
public void click() {
|
||||||
|
System.out.println("Win button");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class WinGuiFactory implements GuiFactory {
|
||||||
|
@Override
|
||||||
|
public Button createButton() {
|
||||||
|
return new WinButton();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TextArea createTextArea() {
|
||||||
|
return new WinTextArea();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class WinTextArea implements TextArea {
|
||||||
|
@Override
|
||||||
|
public String getText() {
|
||||||
|
return "Win TextArea";
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user