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

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

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

    我的漫漫程序之旅

    專注于JavaWeb開發
    隨筆 - 39, 文章 - 310, 評論 - 411, 引用 - 0
    數據加載中……

    用泛型類簡化服務層類的設計

    領域層類可以理解為程序運行時數據流的功能單位,而服務層類是為領域層類提供服務的,常見的服務有增刪改查等操作,在沒有泛型之前,我們只能采用一個服務類為一個領域類提供服務的方案,如果說服務的性質類似,如都是增刪改查等,則代碼的功能重復性很高,維護起來也很麻煩.如果采用了泛型類,我們就可以把性質相似的服務類歸納成一個,很大程度上能簡化編碼.

    下面請看例子,我們有兩個領域對象類:
    Member類:
    package domain;

    import
     org.dom4j.Element;

    /**
     * 成員類
     * 
     * 
    @author zdw
     * 
     
    */

    public class Member implements CanbeXmlElementtable
    {
        
    private
     String name;
        
    private int
     age;

        
    public Member(String name, int
     age)
        
    {
            
    this.name =
     name;
            
    this.age =
     age;
        }


        
    /**
         * 將Member實例轉化為XML中一個節點
         
    */

        
    public Element generateElement(Element parent)
        
    {
            Element elm 
    = parent.addElement("member"
    );
            Element nameElm 
    = elm.addElement("name"
    );
            nameElm.setText(name);
            Element ageElm 
    = elm.addElement("age"
    );
            ageElm.setText(String.valueOf(age));
            
    return
     elm;
        }


        
    public String toString()
        
    {
            
    return "Name=" + name + " Age=" +
     age;
        }


        
    public String getName()
        
    {
            
    return
     name;
        }


        
    public void setName(String name)
        
    {
            
    this.name =
     name;
        }


        
    public int getAge()
        
    {
            
    return
     age;
        }


        
    public void setAge(int age)
        
    {
            
    this.age =
     age;
        }


    }


    公司類:
    package domain;

    import
     org.dom4j.Element;

    /**
     * 公司類
     * 
    @author zdw
     *
     
    */

    public class Company implements CanbeXmlElementtable
    {
        
    //公司名

        private String name;
        
    //地址

        private String address;
        
        
    public
     Company(String name,String address)
        
    {
            
    this.name =
     name;
            
    this.address =
     address;
        }

        
    /*
         * 將Company類的實例轉化為XML的一個節點
         
    */

        
    public Element generateElement(Element parent)
        
    {
            Element elm 
    = parent.addElement("company"
    );
            Element nameElm 
    = elm.addElement("name"
    );
            nameElm.setText(name);
            Element ageElm 
    = elm.addElement("address"
    );
            ageElm.setText(address);
            
    return
     elm;
        }

        
        @Override
        
    public String toString()
        
    {
            
    return "Company Name=" + name + " Address=" +
     address;
        }


        
    public String getName()
        
    {
            
    return
     name;
        }


        
    public void setName(String name)
        
    {
            
    this.name =
     name;
        }


        
    public String getAddress()
        
    {
            
    return
     address;
        }


        
    public void setAddress(String address)
        
    {
            
    this.address =
     address;
        }


    }

    它們都實現了一個名為CanbeXmlElementable的接口:
    package domain;

    import
     org.dom4j.Element;
    /**
     * 接口,強制子類實現generateElement函數
     * 
    @author zdw
     *
     
    */

    public interface CanbeXmlElementtable
    {
        
    public
     Element generateElement(Element parent);
    }

    為什么要實現這個接口呢,下面就知道了.
    對這兩個對象需要實現集中管理和將集合存儲到XML文件中,現在我們可以用泛型類實現這兩個功能,下面看泛型類實現的新服務類:
    package domain;

    import
     java.io.FileWriter;
    import
     java.util.ArrayList;
    import
     java.util.List;

    import
     org.dom4j.Document;
    import
     org.dom4j.DocumentHelper;
    import
     org.dom4j.Element;
    import
     org.dom4j.io.OutputFormat;
    import
     org.dom4j.io.XMLWriter;
    /*
     * 服務類,持有對象的集合,負責對象的存儲
     
    */

    public class Service<extends CanbeXmlElementtable>
    {
        
    private List<T>
     elements;
        
    /*
         *添加集合元素
         
    */

        
    public void add(T element)
        
    {
            
    if(elements == null
    )
            
    {
                elements 
    = new ArrayList<T>
    ();
            }

            elements.add(element);
        }

        
    /*
         * 將集合保存成xml文件
         
    */

        
    public void saveToXml(String xmlFile)
        
    {
            
    try

            
    {
                Document document 
    =
     DocumentHelper.createDocument();
                Element root 
    = document.addElement("elements"
    );
                
    for
    (T t : elements)
                
    {
                    t.generateElement(root);    
                }

                
                OutputFormat format 
    = OutputFormat.createPrettyPrint();;
                
    //指定xml編碼

                format.setEncoding("GBK");
                XMLWriter writer 
    = new XMLWriter(new
     FileWriter(xmlFile),format);
                writer.write(document);
                writer.close();
            }
     catch (Exception e)
            
    {
                e.printStackTrace();
            }

        }

    }


    對于兩個領域對象的集合管理和XML持久化,使用這一個類就可以了,下面是測試代碼:
    package domain;

    public class
     Main
    {

        
    /**
         * 
    @param args
         
    */

        
    public static void main(String[] args)
        
    {
            Service
    <Member> memberService = new Service<Member>
    ();
            
    //泛型類測試一

            memberService.add(new Member("Andy",25));
            memberService.add(
    new Member("Bill",35
    ));
            memberService.add(
    new Member("Cindy",45
    ));
            memberService.add(
    new Member("Sitinspring",55
    ));
            memberService.saveToXml(
    "src/domain/member.xml"
    );
            
    //泛型類測試二

            Service<Company> companyService = new Service<Company>();
            
            companyService.add(
    new Company("IBM","New York"
    ));
            companyService.add(
    new Company("Microsoft","beijing York"
    ));
            companyService.add(
    new Company("Google","Shanghai"
    ));
            companyService.add(
    new Company("Citigroup","Dalian"
    ));
            companyService.saveToXml(
    "src/domain/company.xml"
    );
        }


    }

    文件結果:
    member.xml:
    <?xml version="1.0" encoding="GBK"?>

    <elements>
      
    <member>
        
    <name>Andy</name>
        
    <age>25</age>
      
    </member>
      
    <member>
        
    <name>Bill</name>
        
    <age>35</age>
      
    </member>
      
    <member>
        
    <name>Cindy</name>
        
    <age>45</age>
      
    </member>
      
    <member>
        
    <name>Sitinspring</name>
        
    <age>55</age>
      
    </member>
    </elements>
    company.xml:
    <?xml version="1.0" encoding="GBK"?>

    <elements>
      
    <company>
        
    <name>IBM</name>
        
    <address>New York</address>
      
    </company>
      
    <company>
        
    <name>Microsoft</name>
        
    <address>beijing York</address>
      
    </company>
      
    <company>
        
    <name>Google</name>
        
    <address>Shanghai</address>
      
    </company>
      
    <company>
        
    <name>Citigroup</name>
        
    <address>Dalian</address>
      
    </company>
    </elements>
    現在可以看出,以前使用多個類才能實現的功能在泛型類誕生后只需要一個類就可以了,它能高度歸納類的共性,減少功能相似類的數目,減少重復代碼,減輕了項目的復雜度,真的是"很好,很強大!".



    posted on 2008-01-02 10:27 々上善若水々 閱讀(672) 評論(0)  編輯  收藏 所屬分類: JavaWeb

    主站蜘蛛池模板: 最近免费中文字幕大全免费版视频 | 成人a毛片免费视频观看| 亚洲精品午夜在线观看| 久久久精品国产亚洲成人满18免费网站 | 91精品国产免费| 插鸡网站在线播放免费观看| 亚洲人成无码网站在线观看 | 免费黄色福利视频| 免费在线看黄网站| 国产精品免费αv视频| 亚洲aⅴ天堂av天堂无码麻豆| 亚洲综合久久1区2区3区| 亚洲精品国产精品乱码视色| 亚洲国产精品自产在线播放| 免费看美女被靠到爽的视频| 国产成人yy免费视频| 1000部免费啪啪十八未年禁止观看| 三级黄色在线免费观看| 一级毛片免费不卡| 色婷婷综合缴情综免费观看 | 亚洲AV无码乱码在线观看| 色播在线永久免费视频| 成年女人免费碰碰视频| 成人无遮挡裸免费视频在线观看 | 亚洲人成77777在线观看网| 亚洲精品国产专区91在线| 久久精品蜜芽亚洲国产AV| 久久久久亚洲精品天堂| 亚洲男人都懂得羞羞网站| 亚洲AV无码国产丝袜在线观看| 丝袜熟女国偷自产中文字幕亚洲| 亚洲国产精品成人| 亚洲一级Av无码毛片久久精品| 亚洲国产精品日韩| 国产亚洲一区区二区在线| 综合久久久久久中文字幕亚洲国产国产综合一区首 | a级日本高清免费看| 免费看男人j放进女人j免费看| 四虎国产精品免费永久在线| 大地影院MV在线观看视频免费| 日本高清高色视频免费|