<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-126  評論-247  文章-5  trackbacks-0

    工廠方法模式又稱為多態性工廠模式虛擬構造子模式;與簡單工廠模式不同,在工廠方法模式中,核心的工廠類不再負責所有具體產品實例的創建,
    而僅僅是需要負責給出具體工廠子類必須實現的接口,讓工廠子類去負責具體產品實例的創建。

    工廠方法模式的一般性結構是:


    簡單工廠模式 類似的,下面使用工廠方法模式來模擬一個簡單的加減乘除的計算器


    工廠方法模式結構示意圖:



    共同運算接口:Operation.java

    package pattern.factory.method;
    /**
     * -----------------------------------------
     * @描述  運算接口
     * @作者  fancy
     * @郵箱  fancydeepin@yeah.net
     * @日期  2012-7-30 <p>
     * -----------------------------------------
     
    */

    public interface Operation {

        
    /**
         * <B>方法描述:</B>
         * <p style="margin-left:20px;color:#A52A2A;">
         * 計算兩個操作數的運算值
         * 
    @param operand1 <span style="color: #008080;"> 操作數1 </span>
         * 
    @param operand2 <span style="color: #008080;"> 操作數2 </span>
         * 
    @return <span style="color: #008080;"> 返回兩個操作數的運算值 </span>
         
    */

        
    public double operate(Number operand1, Number operand2);
        
    }



    加法實現類:OperationAdd.java

    package pattern.factory.method;
    /**
     * -----------------------------------------
     * @描述  加法實現類
     * @作者  fancy
     * @郵箱  fancydeepin@yeah.net
     * @日期  2012-7-30 <p>
     * -----------------------------------------
     
    */

    public class OperationAdd implements Operation {

        @Override
        
    public double operate(Number operand1, Number operand2) {
            
            
    return operand1.doubleValue() + operand2.doubleValue();
        }


    }



    減法實現類:OperationSubtract.java

    package pattern.factory.method;
    /**
     * -----------------------------------------
     * @描述  減法實現類
     * @作者  fancy
     * @郵箱  fancydeepin@yeah.net
     * @日期  2012-7-30 <p>
     * -----------------------------------------
     
    */

    public class OperationSubtract implements Operation {

        @Override
        
    public double operate(Number operand1, Number operand2) {
            
            
    return operand1.doubleValue() - operand2.doubleValue();
        }


    }



    乘法實現類:OperationMultiply.java

    package pattern.factory.method;
    /**
     * -----------------------------------------
     * @描述  乘法實現類
     * @作者  fancy
     * @郵箱  fancydeepin@yeah.net
     * @日期  2012-7-30 <p>
     * -----------------------------------------
     
    */

    public class OperationMultiply implements Operation {

        @Override
        
    public double operate(Number operand1, Number operand2) {
            
            
    return operand1.doubleValue() * operand2.doubleValue();
        }


    }



    除法實現類:OperationDivision.java
    package pattern.factory.method;
    /**
     * -----------------------------------------
     * @描述  除法實現類
     * @作者  fancy
     * @郵箱  fancydeepin@yeah.net
     * @日期  2012-7-30 <p>
     * -----------------------------------------
     
    */

    public class OperationDivision implements Operation {

        @Override
        
    public double operate(Number operand1, Number operand2) {
            
    try {
                
    if(operand2.doubleValue() == 0.0){
                    
    throw new Exception("警告:被除數不能為0");
                }
    else{
                    
    return operand1.doubleValue() / operand2.doubleValue();
                }

            }
     catch (Exception e) {e.printStackTrace();}
            
    return 0;
        }


    }


    抽象工廠接口:OperationCreator.java

    package pattern.factory.method;
    /**
     * -----------------------------------------
     * @描述  抽象工廠接口
     * @作者  fancy
     * @郵箱  fancydeepin@yeah.net
     * @日期  2012-7-30 <p>
     * -----------------------------------------
     
    */

    public interface OperationCreator {

        
    /**
         * <B>方法描述:</B>
         * <p style="margin-left:20px;color:#A52A2A;">
         * 獲取運算實例對象
         * 
    @return <span style="color: #008080;"> 返回運算實例對象 </span>
         
    */

        
    public Operation getInstance();
    }



    加法創造器:CreatorAdd.java

    package pattern.factory.method;
    /**
     * -----------------------------------------
     * @描述  加法
     * @作者  fancy
     * @郵箱  fancydeepin@yeah.net
     * @日期  2012-7-30 <p>
     * -----------------------------------------
     
    */

    public class CreatorAdd implements OperationCreator {

        @Override
        
    public Operation getInstance() {
            
            
    return new OperationAdd();
        }


    }



    減法創造器:CreatorSubtract.java

    package pattern.factory.method;
    /**
     * -----------------------------------------
     * @描述  減法
     * @作者  fancy
     * @郵箱  fancydeepin@yeah.net
     * @日期  2012-7-30 <p>
     * -----------------------------------------
     
    */

    public class CreatorSubtract implements OperationCreator {

        @Override
        
    public Operation getInstance() {
            
            
    return new OperationSubtract();
        }


    }



    乘法創造器:CreatorMultiply.java

    package pattern.factory.method;
    /**
     * -----------------------------------------
     * @描述  乘法
     * @作者  fancy
     * @郵箱  fancydeepin@yeah.net
     * @日期  2012-7-30 <p>
     * -----------------------------------------
     
    */

    public class CreatorMultiply implements OperationCreator {

        @Override
        
    public Operation getInstance() {
            
            
    return new OperationMultiply();
        }


    }



    除法創造器:CreatorDivision.java

    package pattern.factory.method;
    /**
     * -----------------------------------------
     * @描述  除法
     * @作者  fancy
     * @郵箱  fancydeepin@yeah.net
     * @日期  2012-7-30 <p>
     * -----------------------------------------
     
    */

    public class CreatorDivision implements OperationCreator {

        @Override
        
    public Operation getInstance() {
            
            
    return new OperationDivision();
        }


    }



    客戶端測試類:Client.java

    package pattern.factory.method;
    /**
     * -----------------------------------------
     * @描述  客戶端測試類
     * @作者  fancy
     * @郵箱  fancydeepin@yeah.net
     * @日期  2012-7-30 <p>
     * -----------------------------------------
     
    */

    public class Client {

        
    private static Operation operation;
        
    private static OperationCreator operationCreator;
        
        
    public static void main(String[] args) {
            
            operationCreator 
    = new CreatorMultiply();
            operation 
    = operationCreator.getInstance();
            System.out.println(operation.operate(
    42.5));
            operationCreator 
    = new CreatorDivision();
            operation 
    = operationCreator.getInstance();
            System.out.println(operation.operate(
    402.5));
            System.out.println(operation.operate(
    400));
            
        }


    }



    后臺打印輸出結果:

    10.0
    16.0
    java.lang.Exception: 警告:被除數不能為0
          at pattern.factory.method.OperationDivision.operate(OperationDivision.java:16)
        at pattern.factory.method.Client.main(Client.java:23)


      
    posted on 2012-07-30 17:43 fancydeepin 閱讀(1910) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲视频在线免费| 国产亚洲精品美女久久久久| 亚洲精品视频免费观看| 亚州免费一级毛片| a毛看片免费观看视频| 日本亚洲高清乱码中文在线观看 | 亚洲高清乱码午夜电影网| 亚洲精品无码不卡| 久久亚洲国产精品123区| 国产高清在线精品免费软件| 五月婷婷综合免费| 香港a毛片免费观看| a级片在线免费看| 国产黄色片免费看| 一个人晚上在线观看的免费视频| 综合偷自拍亚洲乱中文字幕 | 性生交片免费无码看人| 青柠影视在线观看免费高清| h视频在线观看免费| 成年免费a级毛片| 免费VA在线观看无码| 国产99久久亚洲综合精品 | 亚洲第一区精品观看| 国产精品jizz在线观看免费| 好大好硬好爽免费视频| www.黄色免费网站| 免费a级毛片无码a∨蜜芽试看| 精品国产污污免费网站aⅴ | 亚洲国产精品婷婷久久| 亚洲成人免费在线| 亚洲综合精品一二三区在线| 亚洲免费在线视频| 亚洲福利一区二区三区| 亚洲国产av一区二区三区丶| 亚洲午夜国产精品| 亚洲中文字幕日本无线码| jiz zz在亚洲| 在线观看亚洲网站| 无码 免费 国产在线观看91| 国产高潮流白浆喷水免费A片 | 国产无遮挡色视频免费观看性色|