-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
25 changed files
with
288 additions
and
118 deletions.
There are no files selected for viewing
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
23 changes: 23 additions & 0 deletions
23
src/creational/abstract_factory/divfactory/DivFactory.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
package creational.abstract_factory.divfactory; | ||
|
||
import creational.abstract_factory.factory.Factory; | ||
import creational.abstract_factory.factory.Link; | ||
import creational.abstract_factory.factory.Page; | ||
import creational.abstract_factory.factory.Tray; | ||
|
||
public class DivFactory extends Factory { | ||
@Override | ||
public Link createLink(String caption, String url) { | ||
return new DivLink(caption, url); | ||
} | ||
|
||
@Override | ||
public Tray createTray(String caption) { | ||
return new DivTray(caption); | ||
} | ||
|
||
@Override | ||
public Page createPage(String title, String author) { | ||
return new DivPage(title, author); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
package creational.abstract_factory.divfactory; | ||
|
||
import creational.abstract_factory.factory.Link; | ||
|
||
public class DivLink extends Link { | ||
public DivLink(String caption, String url) { | ||
super(caption, url); | ||
} | ||
|
||
@Override | ||
public String makeHTML() { | ||
return "<div class=\"LINK\"><a href=\"" + url + "\">" + caption + "</a></div>\n"; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
package creational.abstract_factory.divfactory; | ||
|
||
import creational.abstract_factory.factory.Item; | ||
import creational.abstract_factory.factory.Page; | ||
|
||
public class DivPage extends Page { | ||
public DivPage(String title, String author) { | ||
super(title, author); | ||
} | ||
|
||
@Override | ||
public String makeHTML() { | ||
StringBuilder sb = new StringBuilder(); | ||
sb.append("<!DOCTYPE html>\n"); | ||
sb.append("<html><head><title>"); | ||
sb.append(title); | ||
sb.append("</title><style>\n"); | ||
sb.append("div.TRAY { padding:0.5em; margin-left:5em; border:1px solid black; }\n"); | ||
sb.append("div.LINK { padding:0.5em; background-color: lightgray; }\n"); | ||
sb.append("</style></head><body>\n"); | ||
sb.append("<h1>"); | ||
sb.append(title); | ||
sb.append("</h1>\n"); | ||
for (Item item: content) { | ||
sb.append(item.makeHTML()); | ||
} | ||
sb.append("<hr><address>"); | ||
sb.append(author); | ||
sb.append("</address>\n"); | ||
sb.append("</body></html>\n"); | ||
return sb.toString(); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
package creational.abstract_factory.divfactory; | ||
|
||
import creational.abstract_factory.factory.Item; | ||
import creational.abstract_factory.factory.Tray; | ||
|
||
public class DivTray extends Tray { | ||
public DivTray(String caption) { | ||
super(caption); | ||
} | ||
|
||
@Override | ||
public String makeHTML() { | ||
StringBuilder sb = new StringBuilder(); | ||
sb.append("<p><b>"); | ||
sb.append(caption); | ||
sb.append("</b></p>\n"); | ||
sb.append("<div class=\"TRAY\">"); | ||
for (Item item: tray) { | ||
sb.append(item.makeHTML()); | ||
} | ||
sb.append("</div>\n"); | ||
return sb.toString(); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
package creational.abstract_factory.factory; | ||
|
||
public abstract class Factory { | ||
|
||
public static Factory getFactory(String classname) { | ||
Factory factory = null; | ||
try { | ||
factory = (Factory) Class.forName(classname).getDeclaredConstructor().newInstance(); | ||
} catch (Exception e) { | ||
System.out.println(e.getMessage()); | ||
} | ||
return factory; | ||
} | ||
|
||
public abstract Link createLink(String caption, String url); | ||
|
||
public abstract Tray createTray(String caption); | ||
|
||
public abstract Page createPage(String title, String author); | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
package creational.abstract_factory.factory; | ||
|
||
public abstract class Item { | ||
protected String caption; | ||
|
||
public Item(String caption) { | ||
this.caption = caption; | ||
} | ||
|
||
public abstract String makeHTML(); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
package creational.abstract_factory.factory; | ||
|
||
public abstract class Link extends Item { | ||
|
||
protected String url; | ||
|
||
public Link(String caption, String url) { | ||
super(caption); | ||
this.url = url; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
package creational.abstract_factory.factory; | ||
|
||
import java.io.IOException; | ||
import java.nio.file.Files; | ||
import java.nio.file.Path; | ||
import java.nio.file.StandardOpenOption; | ||
import java.util.ArrayList; | ||
import java.util.List; | ||
|
||
public abstract class Page { | ||
|
||
protected String title; | ||
protected String author; | ||
protected List<Item> content = new ArrayList<>(); | ||
|
||
public Page(String title, String author) { | ||
this.title = title; | ||
this.author = author; | ||
} | ||
|
||
public void add(Item item) { | ||
content.add(item); | ||
} | ||
|
||
public void output(String filename) { | ||
try { | ||
Files.writeString(Path.of(filename), makeHTML(), StandardOpenOption.CREATE, | ||
StandardOpenOption.TRUNCATE_EXISTING, StandardOpenOption.WRITE); | ||
} catch (IOException e) { | ||
e.printStackTrace(); | ||
} | ||
} | ||
|
||
public abstract String makeHTML(); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
package creational.abstract_factory.factory; | ||
|
||
import java.util.ArrayList; | ||
import java.util.List; | ||
|
||
public abstract class Tray extends Item { | ||
|
||
protected List<Item> tray = new ArrayList<>(); | ||
|
||
public Tray(String caption) { | ||
super(caption); | ||
} | ||
|
||
public void add(Item item) { | ||
tray.add(item); | ||
} | ||
} |
24 changes: 24 additions & 0 deletions
24
src/creational/abstract_factory/listfactory/ListFactory.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
package creational.abstract_factory.listfactory; | ||
|
||
import creational.abstract_factory.factory.Factory; | ||
import creational.abstract_factory.factory.Link; | ||
import creational.abstract_factory.factory.Page; | ||
import creational.abstract_factory.factory.Tray; | ||
|
||
public class ListFactory extends Factory { | ||
|
||
@Override | ||
public Link createLink(String caption, String url) { | ||
return new ListLink(caption, url); | ||
} | ||
|
||
@Override | ||
public Tray createTray(String caption) { | ||
return new ListTray(caption); | ||
} | ||
|
||
@Override | ||
public Page createPage(String title, String author) { | ||
return new ListPage(title, author); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
package creational.abstract_factory.listfactory; | ||
|
||
import creational.abstract_factory.factory.Link; | ||
|
||
public class ListLink extends Link { | ||
|
||
public ListLink(String caption, String url) { | ||
super(caption, url); | ||
} | ||
|
||
@Override | ||
public String makeHTML() { | ||
return " <li><a href=\"" + url + "\">" + caption + "</a></li>\n"; | ||
} | ||
} |
Oops, something went wrong.