Code
1package designmode;
2/** *//**
3 * 策略模式结合简单工厂模式
4 *
5 *
6 */
7// 数据操作接口
8interface DataOperate {
9
10 People getPeople(String oid);
11 boolean insertPeople(People people);
12
13 DataBaseOperateStrategy getDBOS();
14}
15// 数据库操作接口
16interface DataBaseOperate{
17 void driverRegist();
18 void connection();
19 void close();
20}
21// oracle数据库操作类
22class OracelDataBaseOperate implements DataBaseOperate{
23 OracelDataBaseOperate(){
24 System.out.println("new oracle DATABASE operation class");
25 }
26 public void driverRegist(){
27 System.out.println("new oracle DATABASE regist");
28 }
29 public void connection(){
30 System.out.println("new oracle DATABASE connection");
31 }
32 public void close(){
33 System.out.println("new oracle DATABASE close\n\t");
34 }
35}
36// Mysql数据库操作类
37class MysqlDataBaseOperate implements DataBaseOperate{
38 MysqlDataBaseOperate(){
39 System.out.println("new mysql DATABASE operation class");
40 }
41 public void driverRegist(){
42 System.out.println("new mysql DATABASE regist");
43 }
44 public void connection(){
45 System.out.println("new mysql DATABASE connection");
46 }
47 public void close(){
48 System.out.println("new mysql DATABASE close\n\t");
49 }
50}
51// Sqlserver数据库操作类
52class SqlserverDataBaseOperate implements DataBaseOperate{
53 SqlserverDataBaseOperate(){
54 System.out.println("new sqlserver DATABASE operation class");
55 }
56 public void driverRegist(){
57 System.out.println("new sqlserver DATABASE regist");
58 }
59 public void connection(){
60 System.out.println("new sqlserver DATABASE connection");
61 }
62 public void close(){
63 System.out.println("new sqlserver DATABASE close\n\t");
64 }
65}
66// oracle数据操作类
67class OracelDataOperate implements DataOperate{
68 public DataBaseOperateStrategy dbos;
69 OracelDataOperate(){
70 System.out.println("new oracle DATA operation class");
71 this.dbos = new DataBaseOperateStrategy(1);
72 }
73 public People getPeople(String oid){
74 return new People();
75 }
76 public boolean insertPeople(People people){
77 System.out.println("insert new Person to ORACLE database ");
78 return true;
79 }
80 public DataBaseOperateStrategy getDBOS(){
81 return this.dbos;
82 }
83}
84// Mysql数据操作类
85class MysqlDataOperate implements DataOperate{
86 public DataBaseOperateStrategy dbos;
87 MysqlDataOperate(){
88 System.out.println("new mysql DATA operation class ");
89 this.dbos = new DataBaseOperateStrategy(2);
90 }
91 public People getPeople(String oid){
92 return new People();
93 }
94 public boolean insertPeople(People people){
95 System.out.println("insert new Person to MYSQL database ");
96 return true;
97 }
98 public DataBaseOperateStrategy getDBOS(){
99 return this.dbos;
100 }
101}
102// Sqlserver数据操作类
103class SqlserverDataOperate implements DataOperate{
104 public DataBaseOperateStrategy dbos;
105 SqlserverDataOperate(){
106 System.out.println("new sqlserver DATA operation class ");
107 this.dbos = new DataBaseOperateStrategy(3);
108 }
109 public People getPeople(String oid){
110 return new People();
111 }
112 public boolean insertPeople(People people){
113 System.out.println("insert new Person to SQLSERVER database ");
114 return true;
115 }
116 public DataBaseOperateStrategy getDBOS(){
117 return this.dbos;
118 }
119}
120// 策略类
121class DataBaseOperateStrategy{
122
123 DataBaseOperate oper;
124 DataBaseOperateStrategy(int no){
125 switch (no)
126 {
127 case 1:
128 OracelDataBaseOperate os=new OracelDataBaseOperate();
129 oper=os;
130 break;
131
132 case 2:
133 MysqlDataBaseOperate os1=new MysqlDataBaseOperate();
134 oper=os1;
135 break;
136
137 case 3:
138 SqlserverDataBaseOperate os2=new SqlserverDataBaseOperate();
139 oper=os2;
140 break;
141 }
142 }
143 public void eDriverRegist()
144 {
145 oper.driverRegist();
146 }
147 public void eConnection()
148 {
149 oper.connection();
150 }
151 public void eClose()
152 {
153 oper.close();
154 }
155}
156// 工厂类
157class DataOperateFactory {
158 public static final int ORACLE = 0;
159 public static final int MYSQL = 1;
160 public static final int SQLSERVER = 2;
161
162 public DataOperate getDataOjbect(int no) {
163 DataOperate db = null;
164 if (db == null) {
165 if (no == ORACLE)
166 db = new OracelDataOperate();
167 if (no == MYSQL)
168 db = new MysqlDataOperate();
169 if (no == SQLSERVER)
170 db = new SqlserverDataOperate();
171 }
172 return db;
173 }
174}
175// 数据类
176class People {
177 People(){
178 System.out.println("new Person");
179 }
180}
181// 测试类
182class TestCase{
183 private DataOperate db1;
184 private DataOperate db2;
185 private DataOperate db3;
186
187 public void test(){
188 DataOperateFactory dof = new DataOperateFactory();
189
190 db1 = dof.getDataOjbect(0);
191 DataBaseOperateStrategy oracle = db1.getDBOS();
192 oracle.eDriverRegist();
193 oracle.eConnection();
194 People p = db1.getPeople("123");
195 db1.insertPeople(p);
196 oracle.eClose();
197
198 db2 = dof.getDataOjbect(1);
199 DataBaseOperateStrategy mysql = db2.getDBOS();
200 mysql.eDriverRegist();
201 mysql.eConnection();
202 People p1 = db2.getPeople("123");
203 db2.insertPeople(p1);
204 mysql.eClose();
205
206 db3 = dof.getDataOjbect(2);
207 DataBaseOperateStrategy sqlserver = db3.getDBOS();
208 sqlserver.eDriverRegist();
209 sqlserver.eConnection();
210 People p2 = db3.getPeople("123");
211 db3.insertPeople(p2);
212 mysql.eClose();
213 }
214}
215
216public class FactorySimpleStrategyModel {
217
218 public static void main(String[] args) {
219 TestCase case1 = new TestCase();
220 case1.test();
221 }
222
223}
224
1package designmode;
2/** *//**
3 * 策略模式结合简单工厂模式
4 *
5 *
6 */
7// 数据操作接口
8interface DataOperate {
9
10 People getPeople(String oid);
11 boolean insertPeople(People people);
12
13 DataBaseOperateStrategy getDBOS();
14}
15// 数据库操作接口
16interface DataBaseOperate{
17 void driverRegist();
18 void connection();
19 void close();
20}
21// oracle数据库操作类
22class OracelDataBaseOperate implements DataBaseOperate{
23 OracelDataBaseOperate(){
24 System.out.println("new oracle DATABASE operation class");
25 }
26 public void driverRegist(){
27 System.out.println("new oracle DATABASE regist");
28 }
29 public void connection(){
30 System.out.println("new oracle DATABASE connection");
31 }
32 public void close(){
33 System.out.println("new oracle DATABASE close\n\t");
34 }
35}
36// Mysql数据库操作类
37class MysqlDataBaseOperate implements DataBaseOperate{
38 MysqlDataBaseOperate(){
39 System.out.println("new mysql DATABASE operation class");
40 }
41 public void driverRegist(){
42 System.out.println("new mysql DATABASE regist");
43 }
44 public void connection(){
45 System.out.println("new mysql DATABASE connection");
46 }
47 public void close(){
48 System.out.println("new mysql DATABASE close\n\t");
49 }
50}
51// Sqlserver数据库操作类
52class SqlserverDataBaseOperate implements DataBaseOperate{
53 SqlserverDataBaseOperate(){
54 System.out.println("new sqlserver DATABASE operation class");
55 }
56 public void driverRegist(){
57 System.out.println("new sqlserver DATABASE regist");
58 }
59 public void connection(){
60 System.out.println("new sqlserver DATABASE connection");
61 }
62 public void close(){
63 System.out.println("new sqlserver DATABASE close\n\t");
64 }
65}
66// oracle数据操作类
67class OracelDataOperate implements DataOperate{
68 public DataBaseOperateStrategy dbos;
69 OracelDataOperate(){
70 System.out.println("new oracle DATA operation class");
71 this.dbos = new DataBaseOperateStrategy(1);
72 }
73 public People getPeople(String oid){
74 return new People();
75 }
76 public boolean insertPeople(People people){
77 System.out.println("insert new Person to ORACLE database ");
78 return true;
79 }
80 public DataBaseOperateStrategy getDBOS(){
81 return this.dbos;
82 }
83}
84// Mysql数据操作类
85class MysqlDataOperate implements DataOperate{
86 public DataBaseOperateStrategy dbos;
87 MysqlDataOperate(){
88 System.out.println("new mysql DATA operation class ");
89 this.dbos = new DataBaseOperateStrategy(2);
90 }
91 public People getPeople(String oid){
92 return new People();
93 }
94 public boolean insertPeople(People people){
95 System.out.println("insert new Person to MYSQL database ");
96 return true;
97 }
98 public DataBaseOperateStrategy getDBOS(){
99 return this.dbos;
100 }
101}
102// Sqlserver数据操作类
103class SqlserverDataOperate implements DataOperate{
104 public DataBaseOperateStrategy dbos;
105 SqlserverDataOperate(){
106 System.out.println("new sqlserver DATA operation class ");
107 this.dbos = new DataBaseOperateStrategy(3);
108 }
109 public People getPeople(String oid){
110 return new People();
111 }
112 public boolean insertPeople(People people){
113 System.out.println("insert new Person to SQLSERVER database ");
114 return true;
115 }
116 public DataBaseOperateStrategy getDBOS(){
117 return this.dbos;
118 }
119}
120// 策略类
121class DataBaseOperateStrategy{
122
123 DataBaseOperate oper;
124 DataBaseOperateStrategy(int no){
125 switch (no)
126 {
127 case 1:
128 OracelDataBaseOperate os=new OracelDataBaseOperate();
129 oper=os;
130 break;
131
132 case 2:
133 MysqlDataBaseOperate os1=new MysqlDataBaseOperate();
134 oper=os1;
135 break;
136
137 case 3:
138 SqlserverDataBaseOperate os2=new SqlserverDataBaseOperate();
139 oper=os2;
140 break;
141 }
142 }
143 public void eDriverRegist()
144 {
145 oper.driverRegist();
146 }
147 public void eConnection()
148 {
149 oper.connection();
150 }
151 public void eClose()
152 {
153 oper.close();
154 }
155}
156// 工厂类
157class DataOperateFactory {
158 public static final int ORACLE = 0;
159 public static final int MYSQL = 1;
160 public static final int SQLSERVER = 2;
161
162 public DataOperate getDataOjbect(int no) {
163 DataOperate db = null;
164 if (db == null) {
165 if (no == ORACLE)
166 db = new OracelDataOperate();
167 if (no == MYSQL)
168 db = new MysqlDataOperate();
169 if (no == SQLSERVER)
170 db = new SqlserverDataOperate();
171 }
172 return db;
173 }
174}
175// 数据类
176class People {
177 People(){
178 System.out.println("new Person");
179 }
180}
181// 测试类
182class TestCase{
183 private DataOperate db1;
184 private DataOperate db2;
185 private DataOperate db3;
186
187 public void test(){
188 DataOperateFactory dof = new DataOperateFactory();
189
190 db1 = dof.getDataOjbect(0);
191 DataBaseOperateStrategy oracle = db1.getDBOS();
192 oracle.eDriverRegist();
193 oracle.eConnection();
194 People p = db1.getPeople("123");
195 db1.insertPeople(p);
196 oracle.eClose();
197
198 db2 = dof.getDataOjbect(1);
199 DataBaseOperateStrategy mysql = db2.getDBOS();
200 mysql.eDriverRegist();
201 mysql.eConnection();
202 People p1 = db2.getPeople("123");
203 db2.insertPeople(p1);
204 mysql.eClose();
205
206 db3 = dof.getDataOjbect(2);
207 DataBaseOperateStrategy sqlserver = db3.getDBOS();
208 sqlserver.eDriverRegist();
209 sqlserver.eConnection();
210 People p2 = db3.getPeople("123");
211 db3.insertPeople(p2);
212 mysql.eClose();
213 }
214}
215
216public class FactorySimpleStrategyModel {
217
218 public static void main(String[] args) {
219 TestCase case1 = new TestCase();
220 case1.test();
221 }
222
223}
224