日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

工厂模式与策略模式

發(fā)布時間:2024/9/5 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 工厂模式与策略模式 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Code
??1package?designmode;
??2/**?*//**
??3?*?策略模式結(jié)合簡單工廠模式
??4?*
??5?*
??6?*/

??7//?數(shù)據(jù)操作接口
??8interface?DataOperate?{
??9????
?10????People?getPeople(String?oid);
?11????boolean?insertPeople(People?people);
?12????
?13????DataBaseOperateStrategy?getDBOS();
?14}

?15//?數(shù)據(jù)庫操作接口
?16interface?DataBaseOperate{
?17????void?driverRegist();
?18????void?connection();
?19????void?close();
?20}

?21//?oracle數(shù)據(jù)庫操作類
?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數(shù)據(jù)庫操作類
?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數(shù)據(jù)庫操作類
?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數(shù)據(jù)操作類
?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數(shù)據(jù)操作類
?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數(shù)據(jù)操作類
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//?數(shù)據(jù)類
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

轉(zhuǎn)載于:https://www.cnblogs.com/zhangcunhua/archive/2009/04/16/1437312.html

總結(jié)

以上是生活随笔為你收集整理的工厂模式与策略模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。