Java面向接口編程之簡單工廠模式示例
本文實(shí)例講述了Java面向接口編程之簡單工廠模式。分享給大家供大家參考,具體如下:
一 代碼
interface Output { // 接口里定義的成員變量只能是常量 int MAX_CACHE_LINE = 50; // 接口里定義的普通方法只能是public的抽象方法 void out(); void getData( String msg ); } class Printer implements Output { private String[] printData = new String[MAX_CACHE_LINE]; // 用以記錄當(dāng)前需打印的作業(yè)數(shù) private int dataNum = 0; public void out() { // 只要還有作業(yè),繼續(xù)打印 while (dataNum > 0) { System.out.println("打印機(jī)打?。? + printData[0]); // 把作業(yè)隊(duì)列整體前移一位,并將剩下的作業(yè)數(shù)減1 System.arraycopy(printData, 1 , printData, 0, --dataNum); } } public void getData( String msg ) { if (dataNum >= MAX_CACHE_LINE) { System.out.println("輸出隊(duì)列已滿,添加失敗"); } else { // 把打印數(shù)據(jù)添加到隊(duì)列里,已保存數(shù)據(jù)的數(shù)量加1。 printData[dataNum++] = msg; } } } class BetterPrinter implements Output { private String[] printData = new String[MAX_CACHE_LINE * 2]; // 用以記錄當(dāng)前需打印的作業(yè)數(shù) private int dataNum = 0; public void out() { // 只要還有作業(yè),繼續(xù)打印 while(dataNum > 0) { System.out.println("高速打印機(jī)正在打印:" + printData[0]); // 把作業(yè)隊(duì)列整體前移一位,并將剩下的作業(yè)數(shù)減1 System.arraycopy(printData , 1, printData, 0, --dataNum); } } public void getData(String msg) { if (dataNum >= MAX_CACHE_LINE * 2) { System.out.println("輸出隊(duì)列已滿,添加失敗"); } else { // 把打印數(shù)據(jù)添加到隊(duì)列里,已保存數(shù)據(jù)的數(shù)量加1。 printData[dataNum++] = msg; } } } class Computer { private Output out; public Computer(Output out) { this.out = out; } // 定義一個(gè)模擬獲取字符串輸入的方法 public void keyIn(String msg) { out.getData(msg); } // 定義一個(gè)模擬打印的方法 public void print() { out.out(); } } public class OutputFactory { public Output getOutput() { // return new Printer(); return new BetterPrinter(); } public static void main(String[] args) { OutputFactory of = new OutputFactory(); Computer c = new Computer(of.getOutput()); c.keyIn("輕量級(jí)Java EE企業(yè)應(yīng)用實(shí)戰(zhàn)"); c.keyIn("瘋狂Java講義"); c.print(); } }
二 運(yùn)行
高速打印機(jī)正在打?。狠p量級(jí)Java EE企業(yè)應(yīng)用實(shí)戰(zhàn)
高速打印機(jī)正在打印:瘋狂Java講義
三 類圖
更多java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java面向?qū)ο蟪绦蛟O(shè)計(jì)入門與進(jìn)階教程》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。
相關(guān)文章
詳解SpringSecurity如何實(shí)現(xiàn)前后端分離
這篇文章主要為大家介紹了詳解SpringSecurity如何實(shí)現(xiàn)前后端分離,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03java JVM原理與常識(shí)知識(shí)點(diǎn)
在本文中小編給大家分享的是關(guān)于java的JVM原理和java常識(shí),有興趣的朋友們可以學(xué)習(xí)下2018-12-12jxls2.4.5如何動(dòng)態(tài)導(dǎo)出excel表頭與數(shù)據(jù)
這篇文章主要介紹了jxls2.4.5如何動(dòng)態(tài)導(dǎo)出excel表頭與數(shù)據(jù)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08Mybatis動(dòng)態(tài)拼接sql提高插入速度實(shí)例
這篇文章主要介紹了Mybatis動(dòng)態(tài)拼接sql提高插入速度實(shí)例,當(dāng)數(shù)據(jù)量少的時(shí)候,沒問題,有效時(shí)間內(nèi)可能完成插入,但是當(dāng)數(shù)據(jù)量達(dá)到一定程度的時(shí)候,每次都一個(gè)sql插入超時(shí),所以采用了拼接sql的方式加快速度,需要的朋友可以參考下2023-09-09SpringBoot AOP控制Redis自動(dòng)緩存和更新的示例
今天小編就為大家分享一篇關(guān)于SpringBoot AOP控制Redis自動(dòng)緩存和更新的示例,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-01-01