From 1620f26226009ec745d96f0058855cff6c8161df Mon Sep 17 00:00:00 2001
From: zclhit <273239067@qq.com>
Date: Sat, 13 Apr 2019 22:05:05 +0800
Subject: [PATCH 1/2] add home work.
---
.gitignore | 3 ++-
.../sample01/Client.java | 2 ++
.../sample01/HaierTV.java | 2 ++
.../sample01/HisenseTV.java | 2 ++
Chapter 04 Simple Factory/sample01/TV.java | 2 ++
.../sample01/TVFactory.java | 9 +++++---
.../sample01/XMLUtilTV.java | 4 ++--
.../sample02/Administrator.java | 2 ++
.../sample02/Client.java | 4 +++-
.../sample02/Employee.java | 2 ++
.../sample02/Manager.java | 2 ++
Chapter 04 Simple Factory/sample02/User.java | 2 ++
.../sample02/UserDAO.java | 2 ++
.../sample02/UserFactory.java | 2 ++
.../sample01/configTV.xml | 4 ++++
.../sample01/Client.java | 4 +++-
.../sample01/HaierTV.java | 2 ++
.../sample01/HaierTVFactory.java | 2 ++
.../sample01/HisenseTV.java | 2 ++
.../sample01/HisenseTVFactory.java | 1 +
Chapter 05 Factory Method/sample01/TV.java | 1 +
.../sample01/TVFactory.java | 1 +
.../sample01/XMLUtil.java | 8 ++++---
Chapter 05 Factory Method/sample01/config.xml | 3 ++-
.../sample01/project/GifImageReader.java | 8 +++++++
.../project/GifImageReaderFactory.java | 9 ++++++++
.../sample01/project/ImageReader.java | 5 ++++
.../sample01/project/ImageReaderFactory.java | 5 ++++
.../sample01/project/PngImageReader.java | 8 +++++++
.../project/PngImageReaderFactory.java | 9 ++++++++
.../sample01/project/client/Client.java | 23 +++++++++++++++++++
.../sample01/AirConditioner.java | 1 +
.../sample01/Client.java | 1 +
.../sample01/EFactory.java | 1 +
.../sample01/HaierFactory.java | 1 +
.../sample01/HaierTelevision.java | 1 +
.../sample01/HairAirConditioner.java | 1 +
.../sample01/TCLAirConditioner.java | 1 +
.../sample01/TCLFactory.java | 1 +
.../sample01/TCLTelevision.java | 1 +
.../sample01/Television.java | 1 +
.../sample01/XMLUtil.java | 3 ++-
.../sample01/config.xml | 2 +-
.../sample01/homework/Client/GameClient.java | 19 +++++++++++++++
.../sample01/homework/ControllerFactory.java | 7 ++++++
.../homework/InterfaceController.java | 5 ++++
.../sample01/homework/LinuxFactory.java | 13 +++++++++++
.../homework/LinuxInterfaceController.java | 8 +++++++
.../homework/LinuxOperationController.java | 8 +++++++
.../homework/OperationController.java | 5 ++++
.../sample01/homework/WindowsFactory.java | 13 +++++++++++
.../homework/WindowsInterfaceController.java | 8 +++++++
.../homework/WindowsOperationController.java | 8 +++++++
53 files changed, 230 insertions(+), 14 deletions(-)
create mode 100644 Chapter 04 Simple Factory/sample02/out/production/Chapter 04 Simple Factory/sample01/configTV.xml
create mode 100644 Chapter 05 Factory Method/sample01/project/GifImageReader.java
create mode 100644 Chapter 05 Factory Method/sample01/project/GifImageReaderFactory.java
create mode 100644 Chapter 05 Factory Method/sample01/project/ImageReader.java
create mode 100644 Chapter 05 Factory Method/sample01/project/ImageReaderFactory.java
create mode 100644 Chapter 05 Factory Method/sample01/project/PngImageReader.java
create mode 100644 Chapter 05 Factory Method/sample01/project/PngImageReaderFactory.java
create mode 100644 Chapter 05 Factory Method/sample01/project/client/Client.java
create mode 100644 Chapter 06 Abstract Factory/sample01/homework/Client/GameClient.java
create mode 100644 Chapter 06 Abstract Factory/sample01/homework/ControllerFactory.java
create mode 100644 Chapter 06 Abstract Factory/sample01/homework/InterfaceController.java
create mode 100644 Chapter 06 Abstract Factory/sample01/homework/LinuxFactory.java
create mode 100644 Chapter 06 Abstract Factory/sample01/homework/LinuxInterfaceController.java
create mode 100644 Chapter 06 Abstract Factory/sample01/homework/LinuxOperationController.java
create mode 100644 Chapter 06 Abstract Factory/sample01/homework/OperationController.java
create mode 100644 Chapter 06 Abstract Factory/sample01/homework/WindowsFactory.java
create mode 100644 Chapter 06 Abstract Factory/sample01/homework/WindowsInterfaceController.java
create mode 100644 Chapter 06 Abstract Factory/sample01/homework/WindowsOperationController.java
diff --git a/.gitignore b/.gitignore
index 5241a72..e3ed2b0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
-*.class
\ No newline at end of file
+*.class
+.idea
\ No newline at end of file
diff --git a/Chapter 04 Simple Factory/sample01/Client.java b/Chapter 04 Simple Factory/sample01/Client.java
index 7046500..8ef80cb 100644
--- a/Chapter 04 Simple Factory/sample01/Client.java
+++ b/Chapter 04 Simple Factory/sample01/Client.java
@@ -1,3 +1,5 @@
+package sample01;
+
public class Client
{
public static void main(String args[])
diff --git a/Chapter 04 Simple Factory/sample01/HaierTV.java b/Chapter 04 Simple Factory/sample01/HaierTV.java
index d020697..0fad59a 100644
--- a/Chapter 04 Simple Factory/sample01/HaierTV.java
+++ b/Chapter 04 Simple Factory/sample01/HaierTV.java
@@ -1,3 +1,5 @@
+package sample01;
+
public class HaierTV implements TV
{
public void play()
diff --git a/Chapter 04 Simple Factory/sample01/HisenseTV.java b/Chapter 04 Simple Factory/sample01/HisenseTV.java
index 09c6bb1..3219035 100644
--- a/Chapter 04 Simple Factory/sample01/HisenseTV.java
+++ b/Chapter 04 Simple Factory/sample01/HisenseTV.java
@@ -1,3 +1,5 @@
+package sample01;
+
public class HisenseTV implements TV
{
public void play()
diff --git a/Chapter 04 Simple Factory/sample01/TV.java b/Chapter 04 Simple Factory/sample01/TV.java
index cf0f503..0056d2c 100644
--- a/Chapter 04 Simple Factory/sample01/TV.java
+++ b/Chapter 04 Simple Factory/sample01/TV.java
@@ -1,3 +1,5 @@
+package sample01;
+
public interface TV
{
public void play();
diff --git a/Chapter 04 Simple Factory/sample01/TVFactory.java b/Chapter 04 Simple Factory/sample01/TVFactory.java
index ded671d..073b25e 100644
--- a/Chapter 04 Simple Factory/sample01/TVFactory.java
+++ b/Chapter 04 Simple Factory/sample01/TVFactory.java
@@ -1,20 +1,23 @@
+package sample01;
+
+
public class TVFactory
{
public static TV produceTV(String brand) throws Exception
{
if(brand.equalsIgnoreCase("Haier"))
{
- System.out.println("电视机工厂生产海尔电视机!");
+ System.out.println("Haier");
return new HaierTV();
}
else if(brand.equalsIgnoreCase("Hisense"))
{
- System.out.println("电视机工厂生产海信电视机!");
+ System.out.println("Hisense");
return new HisenseTV();
}
else
{
- throw new Exception("对不起,暂不能生产该品牌电视机!");
+ throw new Exception("Other");
}
}
}
\ No newline at end of file
diff --git a/Chapter 04 Simple Factory/sample01/XMLUtilTV.java b/Chapter 04 Simple Factory/sample01/XMLUtilTV.java
index 69ae749..ca2ad5e 100644
--- a/Chapter 04 Simple Factory/sample01/XMLUtilTV.java
+++ b/Chapter 04 Simple Factory/sample01/XMLUtilTV.java
@@ -1,6 +1,6 @@
+package sample01;
import javax.xml.parsers.*;
import org.w3c.dom.*;
-import org.xml.sax.SAXException;
import java.io.*;
public class XMLUtilTV
{
@@ -13,7 +13,7 @@ public static String getBrandName()
DocumentBuilderFactory dFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = dFactory.newDocumentBuilder();
Document doc;
- doc = builder.parse(new File("configTV.xml"));
+ doc = builder.parse(new File("sample01/configTV.xml"));
//获取包含品牌名称的文本节点
NodeList nl = doc.getElementsByTagName("brandName");
diff --git a/Chapter 04 Simple Factory/sample02/Administrator.java b/Chapter 04 Simple Factory/sample02/Administrator.java
index 0fe57f5..ca472bc 100644
--- a/Chapter 04 Simple Factory/sample02/Administrator.java
+++ b/Chapter 04 Simple Factory/sample02/Administrator.java
@@ -1,3 +1,5 @@
+package sample02;
+
public class Administrator extends User
{
public Administrator()
diff --git a/Chapter 04 Simple Factory/sample02/Client.java b/Chapter 04 Simple Factory/sample02/Client.java
index 0d68acf..5986a9c 100644
--- a/Chapter 04 Simple Factory/sample02/Client.java
+++ b/Chapter 04 Simple Factory/sample02/Client.java
@@ -1,3 +1,5 @@
+package sample02;
+
public class Client
{
public static void main(String args[])
@@ -7,7 +9,7 @@ public static void main(String args[])
User user;
UserDAO userDao=new UserDAO();
int permission=userDao.findPermission("zhangsan","123456");
- user=UserFactory.getUser(permission);
+ user= UserFactory.getUser(permission);
user.sameOperation();
user.diffOperation();
}
diff --git a/Chapter 04 Simple Factory/sample02/Employee.java b/Chapter 04 Simple Factory/sample02/Employee.java
index 96b19a6..f52e7a9 100644
--- a/Chapter 04 Simple Factory/sample02/Employee.java
+++ b/Chapter 04 Simple Factory/sample02/Employee.java
@@ -1,3 +1,5 @@
+package sample02;
+
public class Employee extends User
{
public Employee()
diff --git a/Chapter 04 Simple Factory/sample02/Manager.java b/Chapter 04 Simple Factory/sample02/Manager.java
index fa56435..a6bb262 100644
--- a/Chapter 04 Simple Factory/sample02/Manager.java
+++ b/Chapter 04 Simple Factory/sample02/Manager.java
@@ -1,3 +1,5 @@
+package sample02;
+
public class Manager extends User
{
public Manager()
diff --git a/Chapter 04 Simple Factory/sample02/User.java b/Chapter 04 Simple Factory/sample02/User.java
index 131b3e4..6ffa2f9 100644
--- a/Chapter 04 Simple Factory/sample02/User.java
+++ b/Chapter 04 Simple Factory/sample02/User.java
@@ -1,3 +1,5 @@
+package sample02;
+
public abstract class User
{
public void sameOperation()
diff --git a/Chapter 04 Simple Factory/sample02/UserDAO.java b/Chapter 04 Simple Factory/sample02/UserDAO.java
index 7197120..bcc6176 100644
--- a/Chapter 04 Simple Factory/sample02/UserDAO.java
+++ b/Chapter 04 Simple Factory/sample02/UserDAO.java
@@ -1,3 +1,5 @@
+package sample02;
+
public class UserDAO
{
public int findPermission(String userName,String userPassword)
diff --git a/Chapter 04 Simple Factory/sample02/UserFactory.java b/Chapter 04 Simple Factory/sample02/UserFactory.java
index 74db80e..9bab10e 100644
--- a/Chapter 04 Simple Factory/sample02/UserFactory.java
+++ b/Chapter 04 Simple Factory/sample02/UserFactory.java
@@ -1,3 +1,5 @@
+package sample02;
+
public class UserFactory
{
public static User getUser(int permission)
diff --git a/Chapter 04 Simple Factory/sample02/out/production/Chapter 04 Simple Factory/sample01/configTV.xml b/Chapter 04 Simple Factory/sample02/out/production/Chapter 04 Simple Factory/sample01/configTV.xml
new file mode 100644
index 0000000..2173591
--- /dev/null
+++ b/Chapter 04 Simple Factory/sample02/out/production/Chapter 04 Simple Factory/sample01/configTV.xml
@@ -0,0 +1,4 @@
+
+
+ TCL
+
\ No newline at end of file
diff --git a/Chapter 05 Factory Method/sample01/Client.java b/Chapter 05 Factory Method/sample01/Client.java
index a4fd352..c0c2c9d 100644
--- a/Chapter 05 Factory Method/sample01/Client.java
+++ b/Chapter 05 Factory Method/sample01/Client.java
@@ -1,3 +1,5 @@
+package sample01;
+
public class Client
{
public static void main(String args[])
@@ -6,7 +8,7 @@ public static void main(String args[])
{
TV tv;
TVFactory factory;
- factory=(TVFactory)XMLUtil.getBean();
+ factory=(TVFactory)XMLUtil.getBean("className");
tv=factory.produceTV();
tv.play();
}
diff --git a/Chapter 05 Factory Method/sample01/HaierTV.java b/Chapter 05 Factory Method/sample01/HaierTV.java
index d020697..0fad59a 100644
--- a/Chapter 05 Factory Method/sample01/HaierTV.java
+++ b/Chapter 05 Factory Method/sample01/HaierTV.java
@@ -1,3 +1,5 @@
+package sample01;
+
public class HaierTV implements TV
{
public void play()
diff --git a/Chapter 05 Factory Method/sample01/HaierTVFactory.java b/Chapter 05 Factory Method/sample01/HaierTVFactory.java
index c5ffe5b..b81c427 100644
--- a/Chapter 05 Factory Method/sample01/HaierTVFactory.java
+++ b/Chapter 05 Factory Method/sample01/HaierTVFactory.java
@@ -1,3 +1,5 @@
+package sample01;
+
public class HaierTVFactory implements TVFactory
{
public TV produceTV()
diff --git a/Chapter 05 Factory Method/sample01/HisenseTV.java b/Chapter 05 Factory Method/sample01/HisenseTV.java
index 09c6bb1..3219035 100644
--- a/Chapter 05 Factory Method/sample01/HisenseTV.java
+++ b/Chapter 05 Factory Method/sample01/HisenseTV.java
@@ -1,3 +1,5 @@
+package sample01;
+
public class HisenseTV implements TV
{
public void play()
diff --git a/Chapter 05 Factory Method/sample01/HisenseTVFactory.java b/Chapter 05 Factory Method/sample01/HisenseTVFactory.java
index a65a20c..cceba8a 100644
--- a/Chapter 05 Factory Method/sample01/HisenseTVFactory.java
+++ b/Chapter 05 Factory Method/sample01/HisenseTVFactory.java
@@ -1,3 +1,4 @@
+package sample01;
public class HisenseTVFactory implements TVFactory
{
public TV produceTV()
diff --git a/Chapter 05 Factory Method/sample01/TV.java b/Chapter 05 Factory Method/sample01/TV.java
index cf0f503..36c4913 100644
--- a/Chapter 05 Factory Method/sample01/TV.java
+++ b/Chapter 05 Factory Method/sample01/TV.java
@@ -1,3 +1,4 @@
+package sample01;
public interface TV
{
public void play();
diff --git a/Chapter 05 Factory Method/sample01/TVFactory.java b/Chapter 05 Factory Method/sample01/TVFactory.java
index 2e486c1..484ce47 100644
--- a/Chapter 05 Factory Method/sample01/TVFactory.java
+++ b/Chapter 05 Factory Method/sample01/TVFactory.java
@@ -1,3 +1,4 @@
+package sample01;
public interface TVFactory
{
public TV produceTV();
diff --git a/Chapter 05 Factory Method/sample01/XMLUtil.java b/Chapter 05 Factory Method/sample01/XMLUtil.java
index a56a45f..9daf53e 100644
--- a/Chapter 05 Factory Method/sample01/XMLUtil.java
+++ b/Chapter 05 Factory Method/sample01/XMLUtil.java
@@ -1,3 +1,5 @@
+package sample01;
+
import javax.xml.parsers.*;
import org.w3c.dom.*;
import org.xml.sax.SAXException;
@@ -5,7 +7,7 @@
public class XMLUtil
{
//该方法用于从XML配置文件中提取具体类类名,并返回一个实例对象
- public static Object getBean()
+ public static Object getBean(String className)
{
try
{
@@ -13,10 +15,10 @@ public static Object getBean()
DocumentBuilderFactory dFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = dFactory.newDocumentBuilder();
Document doc;
- doc = builder.parse(new File("config.xml"));
+ doc = builder.parse(new File("./sample01/config.xml"));
//获取包含类名的文本节点
- NodeList nl = doc.getElementsByTagName("className");
+ NodeList nl = doc.getElementsByTagName(className);
Node classNode=nl.item(0).getFirstChild();
String cName=classNode.getNodeValue();
diff --git a/Chapter 05 Factory Method/sample01/config.xml b/Chapter 05 Factory Method/sample01/config.xml
index 44c92a0..c53d641 100644
--- a/Chapter 05 Factory Method/sample01/config.xml
+++ b/Chapter 05 Factory Method/sample01/config.xml
@@ -1,4 +1,5 @@
- HaierTVFactory
+ sample01.HaierTVFactory
+ sample01.project.GifImageReaderFactory
\ No newline at end of file
diff --git a/Chapter 05 Factory Method/sample01/project/GifImageReader.java b/Chapter 05 Factory Method/sample01/project/GifImageReader.java
new file mode 100644
index 0000000..44cc353
--- /dev/null
+++ b/Chapter 05 Factory Method/sample01/project/GifImageReader.java
@@ -0,0 +1,8 @@
+package sample01.project;
+
+public class GifImageReader implements ImageReader{
+ @Override
+ public void readImage() {
+ System.out.println("Read gif image.");
+ }
+}
diff --git a/Chapter 05 Factory Method/sample01/project/GifImageReaderFactory.java b/Chapter 05 Factory Method/sample01/project/GifImageReaderFactory.java
new file mode 100644
index 0000000..6e64d9f
--- /dev/null
+++ b/Chapter 05 Factory Method/sample01/project/GifImageReaderFactory.java
@@ -0,0 +1,9 @@
+package sample01.project;
+
+public class GifImageReaderFactory implements ImageReaderFactory{
+ @Override
+ public ImageReader getReader(){
+ System.out.println("gif image reader factory is producing gif image reader");
+ return new GifImageReader();
+ }
+}
diff --git a/Chapter 05 Factory Method/sample01/project/ImageReader.java b/Chapter 05 Factory Method/sample01/project/ImageReader.java
new file mode 100644
index 0000000..e3ef6e3
--- /dev/null
+++ b/Chapter 05 Factory Method/sample01/project/ImageReader.java
@@ -0,0 +1,5 @@
+package sample01.project;
+
+public interface ImageReader {
+ public void readImage();
+}
diff --git a/Chapter 05 Factory Method/sample01/project/ImageReaderFactory.java b/Chapter 05 Factory Method/sample01/project/ImageReaderFactory.java
new file mode 100644
index 0000000..2273992
--- /dev/null
+++ b/Chapter 05 Factory Method/sample01/project/ImageReaderFactory.java
@@ -0,0 +1,5 @@
+package sample01.project;
+
+public interface ImageReaderFactory {
+ public ImageReader getReader();
+}
diff --git a/Chapter 05 Factory Method/sample01/project/PngImageReader.java b/Chapter 05 Factory Method/sample01/project/PngImageReader.java
new file mode 100644
index 0000000..5870a4d
--- /dev/null
+++ b/Chapter 05 Factory Method/sample01/project/PngImageReader.java
@@ -0,0 +1,8 @@
+package sample01.project;
+
+public class PngImageReader implements ImageReader{
+ @Override
+ public void readImage() {
+ System.out.println("Png image reader read images.");
+ }
+}
diff --git a/Chapter 05 Factory Method/sample01/project/PngImageReaderFactory.java b/Chapter 05 Factory Method/sample01/project/PngImageReaderFactory.java
new file mode 100644
index 0000000..e7403e5
--- /dev/null
+++ b/Chapter 05 Factory Method/sample01/project/PngImageReaderFactory.java
@@ -0,0 +1,9 @@
+package sample01.project;
+
+public class PngImageReaderFactory implements ImageReaderFactory {
+ @Override
+ public ImageReader getReader() {
+ System.out.println("Png Image Reader Factory start product Image Reader");
+ return new PngImageReader();
+ }
+}
diff --git a/Chapter 05 Factory Method/sample01/project/client/Client.java b/Chapter 05 Factory Method/sample01/project/client/Client.java
new file mode 100644
index 0000000..3d0462b
--- /dev/null
+++ b/Chapter 05 Factory Method/sample01/project/client/Client.java
@@ -0,0 +1,23 @@
+package sample01.project.client;
+
+import sample01.project.ImageReader;
+import sample01.project.ImageReaderFactory;
+import sample01.XMLUtil;
+
+public class Client {
+ public static void main(String args[])
+ {
+ try
+ {
+ ImageReader ir;
+ ImageReaderFactory irf;
+ irf = (ImageReaderFactory) XMLUtil.getBean("ImageReaderFactory");
+ ir = irf.getReader();
+ ir.readImage();
+ }
+ catch(Exception e)
+ {
+ System.out.println(e.getMessage());
+ }
+ }
+}
diff --git a/Chapter 06 Abstract Factory/sample01/AirConditioner.java b/Chapter 06 Abstract Factory/sample01/AirConditioner.java
index cac52c8..4983ccc 100644
--- a/Chapter 06 Abstract Factory/sample01/AirConditioner.java
+++ b/Chapter 06 Abstract Factory/sample01/AirConditioner.java
@@ -1,3 +1,4 @@
+package sample01;
public interface AirConditioner
{
public void changeTemperature();
diff --git a/Chapter 06 Abstract Factory/sample01/Client.java b/Chapter 06 Abstract Factory/sample01/Client.java
index 993d13a..01ed79e 100644
--- a/Chapter 06 Abstract Factory/sample01/Client.java
+++ b/Chapter 06 Abstract Factory/sample01/Client.java
@@ -1,3 +1,4 @@
+package sample01;
public class Client
{
public static void main(String args[])
diff --git a/Chapter 06 Abstract Factory/sample01/EFactory.java b/Chapter 06 Abstract Factory/sample01/EFactory.java
index e9d52e0..556c63e 100644
--- a/Chapter 06 Abstract Factory/sample01/EFactory.java
+++ b/Chapter 06 Abstract Factory/sample01/EFactory.java
@@ -1,3 +1,4 @@
+package sample01;
public interface EFactory
{
public Television produceTelevision();
diff --git a/Chapter 06 Abstract Factory/sample01/HaierFactory.java b/Chapter 06 Abstract Factory/sample01/HaierFactory.java
index 9f7e8e7..8bd8d09 100644
--- a/Chapter 06 Abstract Factory/sample01/HaierFactory.java
+++ b/Chapter 06 Abstract Factory/sample01/HaierFactory.java
@@ -1,3 +1,4 @@
+package sample01;
public class HaierFactory implements EFactory
{
public Television produceTelevision()
diff --git a/Chapter 06 Abstract Factory/sample01/HaierTelevision.java b/Chapter 06 Abstract Factory/sample01/HaierTelevision.java
index b42f0d0..3101229 100644
--- a/Chapter 06 Abstract Factory/sample01/HaierTelevision.java
+++ b/Chapter 06 Abstract Factory/sample01/HaierTelevision.java
@@ -1,3 +1,4 @@
+package sample01;
public class HaierTelevision implements Television
{
public void play()
diff --git a/Chapter 06 Abstract Factory/sample01/HairAirConditioner.java b/Chapter 06 Abstract Factory/sample01/HairAirConditioner.java
index 33b0313..51f70d0 100644
--- a/Chapter 06 Abstract Factory/sample01/HairAirConditioner.java
+++ b/Chapter 06 Abstract Factory/sample01/HairAirConditioner.java
@@ -1,3 +1,4 @@
+package sample01;
public class HairAirConditioner implements AirConditioner
{
public void changeTemperature()
diff --git a/Chapter 06 Abstract Factory/sample01/TCLAirConditioner.java b/Chapter 06 Abstract Factory/sample01/TCLAirConditioner.java
index e02ea91..f35e870 100644
--- a/Chapter 06 Abstract Factory/sample01/TCLAirConditioner.java
+++ b/Chapter 06 Abstract Factory/sample01/TCLAirConditioner.java
@@ -1,3 +1,4 @@
+package sample01;
public class TCLAirConditioner implements AirConditioner
{
public void changeTemperature()
diff --git a/Chapter 06 Abstract Factory/sample01/TCLFactory.java b/Chapter 06 Abstract Factory/sample01/TCLFactory.java
index 7258e26..14c5104 100644
--- a/Chapter 06 Abstract Factory/sample01/TCLFactory.java
+++ b/Chapter 06 Abstract Factory/sample01/TCLFactory.java
@@ -1,3 +1,4 @@
+package sample01;
public class TCLFactory implements EFactory
{
public Television produceTelevision()
diff --git a/Chapter 06 Abstract Factory/sample01/TCLTelevision.java b/Chapter 06 Abstract Factory/sample01/TCLTelevision.java
index 698b2f9..04629ee 100644
--- a/Chapter 06 Abstract Factory/sample01/TCLTelevision.java
+++ b/Chapter 06 Abstract Factory/sample01/TCLTelevision.java
@@ -1,3 +1,4 @@
+package sample01;
public class TCLTelevision implements Television
{
public void play()
diff --git a/Chapter 06 Abstract Factory/sample01/Television.java b/Chapter 06 Abstract Factory/sample01/Television.java
index 30fd67e..dbcc443 100644
--- a/Chapter 06 Abstract Factory/sample01/Television.java
+++ b/Chapter 06 Abstract Factory/sample01/Television.java
@@ -1,3 +1,4 @@
+package sample01;
public interface Television
{
public void play();
diff --git a/Chapter 06 Abstract Factory/sample01/XMLUtil.java b/Chapter 06 Abstract Factory/sample01/XMLUtil.java
index a56a45f..9855e1d 100644
--- a/Chapter 06 Abstract Factory/sample01/XMLUtil.java
+++ b/Chapter 06 Abstract Factory/sample01/XMLUtil.java
@@ -1,3 +1,4 @@
+package sample01;
import javax.xml.parsers.*;
import org.w3c.dom.*;
import org.xml.sax.SAXException;
@@ -13,7 +14,7 @@ public static Object getBean()
DocumentBuilderFactory dFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = dFactory.newDocumentBuilder();
Document doc;
- doc = builder.parse(new File("config.xml"));
+ doc = builder.parse(new File("./sample01/config.xml"));
//获取包含类名的文本节点
NodeList nl = doc.getElementsByTagName("className");
diff --git a/Chapter 06 Abstract Factory/sample01/config.xml b/Chapter 06 Abstract Factory/sample01/config.xml
index b70704d..9b7cb7d 100644
--- a/Chapter 06 Abstract Factory/sample01/config.xml
+++ b/Chapter 06 Abstract Factory/sample01/config.xml
@@ -1,4 +1,4 @@
- TCLFactory
+ sample01.TCLFactory
\ No newline at end of file
diff --git a/Chapter 06 Abstract Factory/sample01/homework/Client/GameClient.java b/Chapter 06 Abstract Factory/sample01/homework/Client/GameClient.java
new file mode 100644
index 0000000..b4fdb22
--- /dev/null
+++ b/Chapter 06 Abstract Factory/sample01/homework/Client/GameClient.java
@@ -0,0 +1,19 @@
+package sample01.homework.Client;
+
+import sample01.homework.ControllerFactory;
+import sample01.homework.InterfaceController;
+import sample01.homework.LinuxFactory;
+import sample01.homework.OperationController;
+
+public class GameClient {
+ public static void main(String[] args) {
+ ControllerFactory cf;
+ InterfaceController ic;
+ OperationController oc;
+ cf = new LinuxFactory();
+ ic = cf.getInterfaceController();
+ oc = cf.getOperationController();
+ ic.control();
+ oc.control();
+ }
+}
diff --git a/Chapter 06 Abstract Factory/sample01/homework/ControllerFactory.java b/Chapter 06 Abstract Factory/sample01/homework/ControllerFactory.java
new file mode 100644
index 0000000..ffe1f7b
--- /dev/null
+++ b/Chapter 06 Abstract Factory/sample01/homework/ControllerFactory.java
@@ -0,0 +1,7 @@
+package sample01.homework;
+
+public interface ControllerFactory {
+ InterfaceController getInterfaceController();
+
+ OperationController getOperationController();
+}
diff --git a/Chapter 06 Abstract Factory/sample01/homework/InterfaceController.java b/Chapter 06 Abstract Factory/sample01/homework/InterfaceController.java
new file mode 100644
index 0000000..70cee63
--- /dev/null
+++ b/Chapter 06 Abstract Factory/sample01/homework/InterfaceController.java
@@ -0,0 +1,5 @@
+package sample01.homework;
+
+public interface InterfaceController {
+ public void control();
+}
diff --git a/Chapter 06 Abstract Factory/sample01/homework/LinuxFactory.java b/Chapter 06 Abstract Factory/sample01/homework/LinuxFactory.java
new file mode 100644
index 0000000..9eb3206
--- /dev/null
+++ b/Chapter 06 Abstract Factory/sample01/homework/LinuxFactory.java
@@ -0,0 +1,13 @@
+package sample01.homework;
+
+public class LinuxFactory implements ControllerFactory {
+ @Override
+ public InterfaceController getInterfaceController() {
+ return new LinuxInterfaceController();
+ }
+
+ @Override
+ public OperationController getOperationController() {
+ return new LinuxOperationController();
+ }
+}
diff --git a/Chapter 06 Abstract Factory/sample01/homework/LinuxInterfaceController.java b/Chapter 06 Abstract Factory/sample01/homework/LinuxInterfaceController.java
new file mode 100644
index 0000000..b7cdcc8
--- /dev/null
+++ b/Chapter 06 Abstract Factory/sample01/homework/LinuxInterfaceController.java
@@ -0,0 +1,8 @@
+package sample01.homework;
+
+public class LinuxInterfaceController implements InterfaceController {
+ @Override
+ public void control() {
+ System.out.println("Linux interface is controlling");
+ }
+}
diff --git a/Chapter 06 Abstract Factory/sample01/homework/LinuxOperationController.java b/Chapter 06 Abstract Factory/sample01/homework/LinuxOperationController.java
new file mode 100644
index 0000000..8cc8bdf
--- /dev/null
+++ b/Chapter 06 Abstract Factory/sample01/homework/LinuxOperationController.java
@@ -0,0 +1,8 @@
+package sample01.homework;
+
+public class LinuxOperationController implements OperationController {
+ @Override
+ public void control() {
+ System.out.println("linux operation is controlling");
+ }
+}
diff --git a/Chapter 06 Abstract Factory/sample01/homework/OperationController.java b/Chapter 06 Abstract Factory/sample01/homework/OperationController.java
new file mode 100644
index 0000000..26b34dd
--- /dev/null
+++ b/Chapter 06 Abstract Factory/sample01/homework/OperationController.java
@@ -0,0 +1,5 @@
+package sample01.homework;
+
+public interface OperationController {
+ public void control();
+}
diff --git a/Chapter 06 Abstract Factory/sample01/homework/WindowsFactory.java b/Chapter 06 Abstract Factory/sample01/homework/WindowsFactory.java
new file mode 100644
index 0000000..cd0bcbc
--- /dev/null
+++ b/Chapter 06 Abstract Factory/sample01/homework/WindowsFactory.java
@@ -0,0 +1,13 @@
+package sample01.homework;
+
+public class WindowsFactory implements ControllerFactory {
+ @Override
+ public InterfaceController getInterfaceController() {
+ return new WindowsInterfaceController();
+ }
+
+ @Override
+ public OperationController getOperationController() {
+ return new WindowsOperationController();
+ }
+}
diff --git a/Chapter 06 Abstract Factory/sample01/homework/WindowsInterfaceController.java b/Chapter 06 Abstract Factory/sample01/homework/WindowsInterfaceController.java
new file mode 100644
index 0000000..6224b8f
--- /dev/null
+++ b/Chapter 06 Abstract Factory/sample01/homework/WindowsInterfaceController.java
@@ -0,0 +1,8 @@
+package sample01.homework;
+
+public class WindowsInterfaceController implements InterfaceController {
+ @Override
+ public void control() {
+ System.out.println("Windows interface is controlling.");
+ }
+}
diff --git a/Chapter 06 Abstract Factory/sample01/homework/WindowsOperationController.java b/Chapter 06 Abstract Factory/sample01/homework/WindowsOperationController.java
new file mode 100644
index 0000000..a9323e7
--- /dev/null
+++ b/Chapter 06 Abstract Factory/sample01/homework/WindowsOperationController.java
@@ -0,0 +1,8 @@
+package sample01.homework;
+
+public class WindowsOperationController implements OperationController {
+ @Override
+ public void control() {
+ System.out.println("Windows Operation is controlling");
+ }
+}
From 299d232edca15ca6298bc07f449215c9f6d3fdef Mon Sep 17 00:00:00 2001
From: zclhit <273239067@qq.com>
Date: Sun, 14 Apr 2019 17:32:28 +0800
Subject: [PATCH 2/2] add home work and test method.
---
Chapter 08 Prototype/homework/Address.java | 20 ++++++++++++++++++
Chapter 08 Prototype/homework/Customer.java | 20 ++++++++++++++++++
.../homework/EhanSingleton.java | 9 ++++++++
.../homework/IoDHSingleton.java | 14 ++++++++++++
.../homework/LanhanSingleton.java | 18 ++++++++++++++++
Chapter 10 Adapter/sample02/config.xml | 2 +-
Chapter 11 Bridge/homework/Client.java | 8 +++++++
Chapter 11 Bridge/homework/DbConnector.java | 3 +++
Chapter 11 Bridge/homework/Generator.java | 10 +++++++++
.../homework/MySQLDBConnector.java | 6 ++++++
Chapter 11 Bridge/homework/PDFGenerator.java | 7 ++++++
.../homework/PostgrelDBConnector.java | 6 ++++++
Chapter 11 Bridge/homework/TXTGenerator.java | 7 ++++++
Chapter 11 Bridge/homework/UML.png | Bin 0 -> 32486 bytes
Chapter 11 Bridge/homework/XMLGenerator.java | 7 ++++++
15 files changed, 136 insertions(+), 1 deletion(-)
create mode 100644 Chapter 08 Prototype/homework/Address.java
create mode 100644 Chapter 08 Prototype/homework/Customer.java
create mode 100644 Chapter 09 Singleton/homework/EhanSingleton.java
create mode 100644 Chapter 09 Singleton/homework/IoDHSingleton.java
create mode 100644 Chapter 09 Singleton/homework/LanhanSingleton.java
create mode 100644 Chapter 11 Bridge/homework/Client.java
create mode 100644 Chapter 11 Bridge/homework/DbConnector.java
create mode 100644 Chapter 11 Bridge/homework/Generator.java
create mode 100644 Chapter 11 Bridge/homework/MySQLDBConnector.java
create mode 100644 Chapter 11 Bridge/homework/PDFGenerator.java
create mode 100644 Chapter 11 Bridge/homework/PostgrelDBConnector.java
create mode 100644 Chapter 11 Bridge/homework/TXTGenerator.java
create mode 100644 Chapter 11 Bridge/homework/UML.png
create mode 100644 Chapter 11 Bridge/homework/XMLGenerator.java
diff --git a/Chapter 08 Prototype/homework/Address.java b/Chapter 08 Prototype/homework/Address.java
new file mode 100644
index 0000000..db68bf7
--- /dev/null
+++ b/Chapter 08 Prototype/homework/Address.java
@@ -0,0 +1,20 @@
+public class Address implements Cloneable {
+ private String addNo;
+ public Address clone(){
+ Address add = null;
+ try {
+ add = (Address)super.clone();
+ } catch (CloneNotSupportedException e) {
+ System.out.println("class not cloneable.");
+ }
+ return add;
+ }
+
+ public String getAddNo() {
+ return addNo;
+ }
+
+ public void setAddNo(String addNo) {
+ this.addNo = addNo;
+ }
+}
diff --git a/Chapter 08 Prototype/homework/Customer.java b/Chapter 08 Prototype/homework/Customer.java
new file mode 100644
index 0000000..398fc89
--- /dev/null
+++ b/Chapter 08 Prototype/homework/Customer.java
@@ -0,0 +1,20 @@
+public class Customer {
+ private Address addr;
+
+ public Address getAddr() {
+ return addr;
+ }
+
+ public void setAddr(Address addr) {
+ this.addr = addr;
+ }
+
+ public static void main(String[] args) {
+ Customer c = new Customer();
+ Address add = new Address();
+ add.setAddNo("aaa");
+ c.setAddr(add);
+ Address add2 = c.getAddr().clone();
+ System.out.println(add == add2);
+ }
+}
diff --git a/Chapter 09 Singleton/homework/EhanSingleton.java b/Chapter 09 Singleton/homework/EhanSingleton.java
new file mode 100644
index 0000000..6d9ce9b
--- /dev/null
+++ b/Chapter 09 Singleton/homework/EhanSingleton.java
@@ -0,0 +1,9 @@
+public class EhanSingleton {
+ // Ehan model, initialize while create class
+ private static final EhanSingleton instance = new EhanSingleton();
+ private EhanSingleton(){};
+
+ public static EhanSingleton getInstance(){
+ return instance;
+ }
+}
diff --git a/Chapter 09 Singleton/homework/IoDHSingleton.java b/Chapter 09 Singleton/homework/IoDHSingleton.java
new file mode 100644
index 0000000..88520a6
--- /dev/null
+++ b/Chapter 09 Singleton/homework/IoDHSingleton.java
@@ -0,0 +1,14 @@
+public class IoDHSingleton {
+ // rewrite builder
+ private IoDHSingleton() {
+ }
+
+ // static inner class
+ private static class HolderClass {
+ private static final IoDHSingleton instance = new IoDHSingleton();
+ }
+
+ public static IoDHSingleton getInstance() {
+ return HolderClass.instance;
+ }
+}
diff --git a/Chapter 09 Singleton/homework/LanhanSingleton.java b/Chapter 09 Singleton/homework/LanhanSingleton.java
new file mode 100644
index 0000000..40e6382
--- /dev/null
+++ b/Chapter 09 Singleton/homework/LanhanSingleton.java
@@ -0,0 +1,18 @@
+public class LanhanSingleton {
+ private volatile static LanhanSingleton instance = null;
+ private LanhanSingleton(){}
+
+ public LanhanSingleton getInstance() {
+ // first check
+ if (null == instance) {
+ // lock class
+ synchronized (LanhanSingleton.class) {
+ // second check
+ if (null == instance) {
+ instance = new LanhanSingleton();
+ }
+ }
+ }
+ return instance;
+ }
+}
diff --git a/Chapter 10 Adapter/sample02/config.xml b/Chapter 10 Adapter/sample02/config.xml
index 323ecb8..c320850 100644
--- a/Chapter 10 Adapter/sample02/config.xml
+++ b/Chapter 10 Adapter/sample02/config.xml
@@ -1,4 +1,4 @@
- NewCipherAdapter
+ CipherAdapter
\ No newline at end of file
diff --git a/Chapter 11 Bridge/homework/Client.java b/Chapter 11 Bridge/homework/Client.java
new file mode 100644
index 0000000..21fdc2f
--- /dev/null
+++ b/Chapter 11 Bridge/homework/Client.java
@@ -0,0 +1,8 @@
+public class Client {
+ public static void main(String[] args) {
+ DbConnector connector = new PostgrelDBConnector();
+ Generator generator = new PDFGenerator();
+ generator.setConnector(connector);
+ generator.exportFile();
+ }
+}
diff --git a/Chapter 11 Bridge/homework/DbConnector.java b/Chapter 11 Bridge/homework/DbConnector.java
new file mode 100644
index 0000000..8877b65
--- /dev/null
+++ b/Chapter 11 Bridge/homework/DbConnector.java
@@ -0,0 +1,3 @@
+public interface DbConnector {
+ void connectDB();
+}
diff --git a/Chapter 11 Bridge/homework/Generator.java b/Chapter 11 Bridge/homework/Generator.java
new file mode 100644
index 0000000..08a7a2a
--- /dev/null
+++ b/Chapter 11 Bridge/homework/Generator.java
@@ -0,0 +1,10 @@
+abstract class Generator {
+ protected DbConnector connector;
+
+ // set connector
+ public void setConnector(DbConnector connector) {
+ this.connector = connector;
+ }
+
+ abstract void exportFile();
+}
diff --git a/Chapter 11 Bridge/homework/MySQLDBConnector.java b/Chapter 11 Bridge/homework/MySQLDBConnector.java
new file mode 100644
index 0000000..ae449c1
--- /dev/null
+++ b/Chapter 11 Bridge/homework/MySQLDBConnector.java
@@ -0,0 +1,6 @@
+public class MySQLDBConnector implements DbConnector {
+ @Override
+ public void connectDB() {
+ System.out.println("read from mysql db");
+ }
+}
diff --git a/Chapter 11 Bridge/homework/PDFGenerator.java b/Chapter 11 Bridge/homework/PDFGenerator.java
new file mode 100644
index 0000000..d5f932c
--- /dev/null
+++ b/Chapter 11 Bridge/homework/PDFGenerator.java
@@ -0,0 +1,7 @@
+public class PDFGenerator extends Generator {
+ @Override
+ void exportFile() {
+ this.connector.connectDB();
+ System.out.println("generate PDF file.");
+ }
+}
diff --git a/Chapter 11 Bridge/homework/PostgrelDBConnector.java b/Chapter 11 Bridge/homework/PostgrelDBConnector.java
new file mode 100644
index 0000000..a7fe717
--- /dev/null
+++ b/Chapter 11 Bridge/homework/PostgrelDBConnector.java
@@ -0,0 +1,6 @@
+public class PostgrelDBConnector implements DbConnector {
+ @Override
+ public void connectDB() {
+ System.out.println("read from postgrel db.");
+ }
+}
diff --git a/Chapter 11 Bridge/homework/TXTGenerator.java b/Chapter 11 Bridge/homework/TXTGenerator.java
new file mode 100644
index 0000000..be1be94
--- /dev/null
+++ b/Chapter 11 Bridge/homework/TXTGenerator.java
@@ -0,0 +1,7 @@
+public class TXTGenerator extends Generator {
+ @Override
+ void exportFile() {
+ this.connector.connectDB();
+ System.out.println("generate txt file.");
+ }
+}
diff --git a/Chapter 11 Bridge/homework/UML.png b/Chapter 11 Bridge/homework/UML.png
new file mode 100644
index 0000000000000000000000000000000000000000..6d584757b28a6a583b26b97aca94cc5ae7a35893
GIT binary patch
literal 32486
zcmeFZbySq?*DyMWppr^Ak0R1iL${Q4x1_|-ARR-9ptLj$&A<>dGy_O0r67_+hk!JQ
zbi;S!^LxMdJ?otF?>YZ`ti`$)_srhczV@|y?~6!Hbwxrv8axmPM5y#qP8$Te8v+8|
z`EdUZ@aDY|g)#8J^3Ya%0jl^xw*mZd*G@)F1_Y{($G^110semA_R`1$1S0CZ{l)5a
zEwKiHf&!G}WORMacIG%@m^HlD_F(ioPW|xe>%`CLs9B4U&u{N=4E%${{Zz13cIC|b56P)pXMwOW=93eOS($7F>02@#KdG~
z2=Vi&D_GBGN?`#+fGA`@xVKOI#~^Ir5fc6|fs%p+o$1u
zEUMcl=Q|L=?UUlg{{jF1iFJHX(DC7+r;pFc&Ww=S?csrbAc#Az_qlKOS65f(ntfn@
zPc}=9F~sO_1q|IgJUqO<3K&3E8JV{QYK?afJKh6;EU@}!?!Y6{&CEq@(XzOcV*Yn68a(cm@O@1210u`vJk7s^DS)hPodMZBW`j
zxZUV*4`VI>0^|YX1GaVBYrGif1sjIWv5NpZU>WO)wBp>A&z4Ej4XV
zNNpWQ`#QHnFH#G*Yjf87A=!VGB;+Uqxl-e(1sKHlUyN6FF
zpD|z`=n24FC=?lBXnAu5M}_~#k3Y(rGcyr8C!FjqIELb@RA2Frnmjq8{;Po<=if2=
z^*`m*F1WzI(FNs5QPgh#!i||DqCu|A^RIGRKy97;koN6qAkGNw6((Y|beKrfJw5PW
zjjfX8uWzY5r81;DwYv$tI9B7Q@l}U!M4c|h?yqw^FDk6vG3L&flYjxMXR!3eh!H=KqmP
zCD!LKadUPyl@HCRzFtvnla3fxk$JFd~Jlj)Y|F_;i|zo&Kh@Vix&b>A{Gm!^?M
z^g0-BcW6^**jev5?^ki%{3&vHqO-HJ{c5J&euA;7n!zdT-mI7C@e(Y(d0TgV9H01O
zNi^_mU%r%3+52scnLeMFpWadIU%RV2Kuc4)*Y*;W`nG8Q#QO9}HHQ-a^Riaem9V`!
z=^|AV@ncV;sB3(2yF`6>A#EQZ>)Ud
zrTL$W24tw}yhKc`5u8_kX-)w@@_nH6ijY}Ar_CKJJseT*vd|uEAPInjbkc>u+8#mI
zpzXaqtz6wpBliTkgZWK@&iU2=gV@jDN+X)F;*E|`rUBMT(G`xbM$Pva7#P;~Z@rtX
zHcbUVQqK>8t8~oMrBQR{W#U?vY^Q`TM^2GlWntI?aCM4btO7$Zd4U@Kg76K|%F40v@l1gSZ4?O>ONd{v_)si
z?u$}ay$K#?bqcUQ1AL>w0nQDd0^mWb;DCM;!pkYx>7Lr2GG5Jagwl}`%RpnxrbO#M
z!)x__ieeDl$;MTSeLmxS@3cjJ;Phyv_3#TbW1zqL`=gx`Y;zlQZ^%(k0bC(_wyu82
zP$?5q^CAO<-`VQLhza8HxILAG$g89)bpx>#@5ej0M1A-dj|OQwn|5E5e`4zW;td>H*qrLwbIz}Ol3=x5owlH>%?xDU
z!a@mviTAwBCC;{mi))Lwb{$L`T@rYUI=9TVn^y@N7sFWg#
zJ2<1N7b+v(@{IJC^F=
z8KoS)@ee@sc0>;vOG;I^6s%TuUBQ?;0?Xx%8rwIV3Tn9p8~yyQx4;xt05IEE_fAo7
zs|;nDe3~%~`!+m!YkW*>qDEusi85?0;8t`s9cQp6RmCINsDlklBs9T&LfM;c$^(s>
z?EhM-f9_PtV-&1N75tUP5A?6@5B&TKMj;3C);!lgH3LwD;5-VUPi`Y`yOk&lnY$ME
zid@5YZ=)*1hgg#`8zzhY6NDz{F%9rh2i^S+BKC_`+oD?`P9NQN*K$~Qq}lq|`p~=-
zc=MNs0sD*sJ@3TN`Tjaj9v0*I_lQ5ye}f&vE*Fz|z;pWDT(^FSF0U52IX^&5;`v}6#&d0{C$jZrFSc3}az&KCyf~Prl3xCk9h=L4BxONxCJ$YefT^pWFt*w}Q
zgFRODHuHCG89;}JHR*<@uRjE>Q`Hp=!FdDt;Zfti(W@dzFzam$CVrvW#rOF4oLKp7
zoZ#kr*P@f{%j6uk?xg6w|6B;Ad)_|B=YLK33AWG{4
z2=p`LR_-|xK?FK8GH!ZXqs1EaUVtSyP*Qk&2NZ(+#FuJ)W8)ibf`XEC)zLqFb$($V0P)@sh-Mv#`nfUh#I>15zWiuzZtjeuyJ){TxtXpHzC3j&v`nE7&6R|n
zUtcxryXe#r-YVr!UkHe>@Oarq7bD|4`6(sgH8LvAf6CKM@5PMLt*ME7k2@soAjN>f
zDRs_qL7tpfB~3ve3Pc<~y46Er1{!JX(yNys{S#6k?*2X33`EZWQI|9ASDAtgVUYK?
z!C%O7J{I`nbo^b5;PX+y5ib>CMug=42X>N>R%ofIdCaI7;_#Wjm~Zl3z|;`jwZQf}
z7>1lrF9}Ou*dZv%{m&FeJO0U)3O>e;%)JAc7e!eW|9@O1Y1GV31c}@b-sQ?HpiW__
zpv$3zu4(`WQN;M5w1apB;>?i#p0J`+depow{Oo7DX}z&%;;m8X_&jt@{W7-qNPuy4
zR3K8`%Dg=Yv+b_CgrFIiIp3*S{)7Du0{D%eRFErz!k*=GSUgu{7Zqb{dM7J;8K&0ziGvoj+lKyvO$BR&6d6{AtBG_!n~`c1SiSs4`3fGZ9;`Sa)J
zLjQYW#=pD))hXZGuZIsGA_(sHv_z|t-nF=&lao^yeX;#(ZOx9W(*WR3+&cuYdy(G-
zJCkP}>Cw9eV~IK!*H;(6Dq|*SM*DJOeS$@pQ-=8h1%M5{gq#x;rY={^#BtHv^zoLa
zrKOQAv$0WKdYGBz4TBMgs{oI`X;;dy)&Br^y|=|7SUxR}piVjm(kaRyAiFEH_%rC|
zm!UAaWzqZHC5XZJqTz;N-0H8m-7Z7cyG-~2Pf#(_KYvWAD8Z?CR7ojxkPr48(LFxa
zck56q6X`{OQ`FqFJ*%fuqa6Kj*kmufsY2WB;jJxX{lN?VXGI0HcoQwAb^AIcXMg_W
z6>=Ro^ZrG2hyl3yJr*&@YCkq>CiWTN&U}0D?hKXvv8U)lVX)^bebblsqL;<}z9Mw>U(z3AHM^M!EIX^e5y$G(OFj3<$
zcdU&Ta-(woo;QbNHaNItBWDO=unVuV>gX%OT&aRNo4RjcpzbCCmu-s~X#r8wgiD
zOuud1mRsw+pzY8qsYV<
zS1<~6V#oINwHe2ue&CkEIDe|`R83NRc5TNXzL0X+&|g?V6ONmUlU?-gM-*m@kgndO
zPo<6GU#jgc9002IKOl&o#_@bF;D%Elh=0=EH__f07QnYk(d|j&gXQQ3BGi@2{aZsj
z`3)A-Ke4xoD2zfOO1CkH+fy*~na5UiN!*b?EBAsJ{NNSEzYnkZZZC^pXm-n#S5p
zgR6b}-26N{I>klI(#$G$j}
zk3kfFY%MR`$Y^5c(yZs}Yx;dEhZKe|qklCCJp|6z7z`yUznqKc1IwCxx@;xGXnl~p
zKUCLJ`h}7g#=sTb<}X23Y}2Q&U^GFW3n9N(UYPpo1Q&?%RHG4t`Q&XgRTIq@=j_4U
z@^s-;x$S&h#1U-0o{kKPPW9q-`YO>W(o@q)=k&+IZG}c7Hq$(H0F2
zb@X|S!l+%nz9fP-I$6AU*wfUF+$f?^DhVspN(8DfH!-24LS#$Br9MNtN=%ly~Rp&F`;{q&vl@=Hp$Ld|kTAEU$KCQ_>4W%X@lmA3}xOta$>dGe2
zeL2bKYqFOf+fkNCfKid18-;?uzlv7&61TG5bf>P(X0TINGe{ZWm@o(?shA9#4j=Fw
zbOK9+0}iuf=sB0A(t{NuR7c&tX?S!Dw-qjN_t^g0d>QB6qk+1^L!NZotmgbf^SLeU
zvVa=bLz@xWXUJ(49mI97!YnKPO){WzRX%qu6o085@7p#tB*r3&;cqUIv#g50m}4J&
zk5uI5g|KnW&UTe*?+v(bH6KZ`|hlwBD!j~Gumux?yFI^QkW
z$Y>DG^9-EGLPXnF%k)O1igR2F0(k0OUe-QPgbVKHDR@U)#_JlzEUHj53q%vs*yLKR
z7{V9qj$&89rjK6dlkol%vsmH>g<^s!`%d&P9QT$(dMMnv*-FzXXg!@E-|%mfw{4nO
z22UMqzs+YgcsmQO@NT^E;#QxMU1>QR=j⩔f!e_jsYacz#!jt#E|Bg{8{F
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
literal 0
HcmV?d00001
diff --git a/Chapter 11 Bridge/homework/XMLGenerator.java b/Chapter 11 Bridge/homework/XMLGenerator.java
new file mode 100644
index 0000000..3e058bd
--- /dev/null
+++ b/Chapter 11 Bridge/homework/XMLGenerator.java
@@ -0,0 +1,7 @@
+public class XMLGenerator extends Generator {
+ @Override
+ void exportFile() {
+ this.connector.connectDB();
+ System.out.println("generate xml file.");
+ }
+}