<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 閱讀(1911) 評論(0)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 成人妇女免费播放久久久| 182tv免费观看在线视频| 亚洲处破女AV日韩精品| 1000部夫妻午夜免费| 亚洲欧美日韩一区二区三区在线| 亚洲乱妇熟女爽到高潮的片| www.亚洲精品.com| 精品无码人妻一区二区免费蜜桃| 亚洲日韩精品无码AV海量| 久久亚洲国产成人精品无码区| 最近2022中文字幕免费视频| 国产成人精品日本亚洲语音| 亚洲va久久久噜噜噜久久| AV免费网址在线观看| 97在线免费视频| 亚洲人成色在线观看| 久久精品亚洲一区二区| 国内一级一级毛片a免费| 华人在线精品免费观看| 久久精品国产亚洲一区二区| 成人毛片免费观看| 国产激情免费视频在线观看| 羞羞网站免费观看| 亚洲精品高清国产麻豆专区| 中文字幕亚洲综合久久男男| 国内免费高清在线观看| 日韩精品久久久久久免费| 瑟瑟网站免费网站入口| 亚洲私人无码综合久久网| 亚洲五月激情综合图片区| 亚洲人妻av伦理| 日本免费精品一区二区三区| 亚洲av永久无码精品三区在线4| 青青青免费国产在线视频小草| 中文字幕免费在线播放| 亚洲aⅴ无码专区在线观看春色 | 成年女人18级毛片毛片免费 | 国产香蕉九九久久精品免费| 国产免费无码一区二区| 一级人做人爰a全过程免费视频| 亚洲成av人在线观看网站|