【Java】包的命名規則


命名規范

  • 包:所有單詞的字母小寫,如 org.nemo.demo
  • 常量:所有單詞的字母大寫,如 FLAG
  • 類:所有單詞的首字母大寫,如 TestJava
  • 屬性:第一個單詞的首字母小寫,之后每個單詞的首字母大寫,如 studentName
  • 方法:第一個單詞的首字母小寫,之后每個單詞的首字母大寫,如 getInfo()

Java包的命名規則

  • util:對應英文utility(實用工具),一般存放工具類,就像java.lang.util包一樣存放着各種各樣的工具類方便你編程,這里你可以放自己寫好的工具類為自己的程序提供方便。
  • business:一般存放業務類,處理程序業務的功能類就放在這里。
  • control:一般存放控制類,后台控制的一些類就放在這里,例如J2EE里的Servlet。
  • dao:對應英文Data Access Object,數據訪問對象,一般存放與數據庫(文本、Excel等)打交道的類,只關心數據庫的增刪改查。

    用於操作的封裝。

  • vo:對應英文Value Object,值對象,一般存放實體(Model)。

    vo表示value object,主要實現數據的封裝,常與數據庫中一個表或視圖相對應。
    該類的實現基本上是一個固定的模板,因此很多建模工具(如rose等)能夠根據數據庫中的表和視圖自動生成該文件,此過程稱為“反向工程”。

  • driver:一般存放驅動類,一般顯示菜單,調用dao等包中的方法來驅動程序。一般擁有在其中使用方法的主方法。

Object 划分

  1. PO(persistent object)持久對象
    PO 就是對應數據庫中某個表中的一條記錄,多個記錄可以用 PO 的集合。PO 中應該不包含任何對數據庫的操作。
  2. DO (Domain Object)領域對象
    就是從現實世界中抽象出來的有形或無形的業務實體。
  3. TO(Transfer Object)數據傳輸對象
    不同的應用程序之間傳輸的對象
  4. DTO (Data Transfer Object)數據傳輸對象
    這個概念來源於 J2EE 的設計模式,原來的目的是為了 EJB 的分布式應用提供粗粒度的數據實體,以減少分布式調用的次數,從而提高分布式調用的性能和降低網絡負載,但在這里,泛指用於展示層與服務層之間的數據傳輸對象。
  5. VO(Value Object)值對象
    通常用於業務層之間的數據傳遞,和 PO 一樣也是僅僅包含數據而已。但應是抽象出的業務對象,可以和表對應,也可以不和表對應,這根據業務的需要。用 new 關鍵宇創建,由 GC 回收的。
    View Object:視圖對象;
    接受頁面傳遞來的數據,封裝對象
    將業務處理完成的對象,封裝成頁面要用的數據
  6. BO(Business Object)業務對象
    從業務模型的角度看,見 UML 元件領域模型中的領域對象。封裝業務邏輯的 Java 對象,通過調用 DAO 方法,結合 PO、VO 進行業務操作。Business Object:業務對象主要作用是把業務邏輯封裝為一個對象。這個對象可以包括一個或多個其它的對象。比如一個簡歷,有教育經歷、工作經歷、社會關系等等。我們可以把教育經歷對應一個 PO,工作經歷對應一個 PO,社會關系對應一個 PO。建立一個對應簡歷的 BO 對象處理簡歷,每個 BO 包含這些 PO。這樣處理業務邏輯時,我們就可以針對 BO 去處理。
  7. POJO(Plain Ordinary Java Object)簡單無規則 Java 對象
    傳統意義的 Java 對象。就是說在一些 Object/Relation Mapping 工具中,能夠做到維護數據庫表記錄的 Persisent Object 完全是一個符合JavaBean 規范的純 Java 對象,沒有增加別的屬性和方法。我的理解就是最基本的 JavaBean,只有屬性字段及 setter 和 getter 方法!
    POJO 是 DO/DTO/BO/VO 的統稱。
  8. DAO(Data Access Object)數據訪問對象
    是一個 sun 的一個標准 J2EE 設計模式,這個模式中有個接口就是 DAO,它負持久層的操作。為業務層提供接口。此對象用於訪問數據庫。通常和 PO 結合使用,DAO 中包含了各種數據庫的操作方法。通過它的方法,結合 PO 對數據庫進行相關的操作。夾在業務邏輯與數據庫資源中間。配合 VO,提供數據庫的 CRUD 操作。

SSM框架

  • pojo:對應英文Plain Ordinary Java Object,簡單的Java對象,實際就是普通JavaBeans,是為了避免和EJB混淆所創造的簡稱。其中寫普通類屬性。
  • dao:(持久層)xml中寫數據庫操作
  • service:(業務層)其中寫各種接口還有實現,方法有關操作的可以調用dao中的方法,或 自己寫其他服務(如 分頁)
  • controller:(表現層)其中設置請求映射地址,ModelAndView 方法中,將存入的參數進行處理,可使用service方法,用ModelAndView傳入頁面,對頁面進行操作(增加數據、跳轉頁面等)

頁面發送請求給控制器,控制器調用業務層處理邏輯,業務層向持久層發送請求,持久層與數據庫交互,后將結果返回給業務層,業務層將處理邏輯發送給控制器,控制器再調用視圖展現數據。

部分代碼示例

vo包中

package vo;

public class Student 
{
    private String id;
    private String name;
    private String gender;
    private float java;
    private float english;
    private float math;
    private float totalScore;
    private float average;
}

driver包中:

package driver;

public class Driver 
{
    //存放目前集合中的學生信息
    public static List<Student> list=new ArrayList<Student>();

    public static void main(String args[])
    {
        int choice=menuChoice();
        while(choice!=7){
            switch(choice)
            {
                case 1:importFromExcel();break;
                case 2:importFromTxt();break;
                case 3:inputFromKeyboard();break;
                case 4:queryStudent();break;
                case 5:exportToExecel();break;
                case 6:exportToTxt();break;
                default:System.out.println("無效的選擇");

            }
            choice=menuChoice();
        }
        System.out.println("程序成功退出");
        System.exit(0);

    }

    public static int menuChoice()
    {
        System.out.println("====學生成績管理系統=====");
        System.out.println("1.  從excel中加載數據");
        System.out.println("2.  從文本文件加載數據");
        System.out.println("3.  鍵盤輸入");
        System.out.println("4.  成績查詢");
        System.out.println("5.  輸出到excel文件");
        System.out.println("6.  輸出到純文本文件");
        System.out.println("7.  退出");
        System.out.println("請輸入選項:");
        Scanner scan=new Scanner(System.in);
        int choice=scan.nextInt();
        return choice;
    }
    public static void importFromExcel()
    {
        /*
         * 調用dao中的方法
         */
        StudentDAO dao=new StudentDAO();
        String fileName="c:/data/student.xls";
        List<Student> list1=dao.ReadFromExcel(fileName);    //dao中的方法
        list.addAll(list1); //將list1集合中的數據增加到list集合中
        System.out.println("成功從excel中導入"+list1.size()+"個學生");
    }
}

dao包中:

package dao;
    
public class StudentDAO 
{
    // 實現讀學生文件,將讀出的信息存放於student集合中
    public List<Student> ReadFromExcel(String fileName) 
    {

        List<Student> list = new ArrayList<Student>();
        File file = new File(fileName);
        try 
        {
            InputStream in = new FileInputStream(file);
            Workbook wb = Workbook.getWorkbook(in);
            Sheet s = wb.getSheet(0);
            for(int i = 1; i < s.getRows(); i++)   //第一行不要
            {
                Cell[] row = s.getRow(i);           
                Student student = new Student(row[0].getContents(), row[1].getContents(),   //填充數據
                        row[2].getContents(), Float.parseFloat(row[3].getContents()),
                        Float.parseFloat(row[4].getContents()), Float.parseFloat(row[5].getContents()));
                //由於讀取的數據全部都是String 類型所以要轉換成Float類型 
                student.setTotalScore(student.getEnglish()+student.getJava()+student.getMath());
                student.setAverage(student.getTotalScore()/3);
                list.add(student);                      
            }
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (BiffException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return list;
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM