zoukankan      html  css  js  c++  java
  • 菜鸟日记之分层

                                                

                       Java中对象的几种        PO    vo     pojo    javabean     dto

                                   

    一、PO  (个人理解 实体类)

              PO:persistant object  持久对象   可以看成是与数据库中的表相映射的java对象。最简单的  PO  就是对应数据库中某个表中的一条记录,多个记录可以用 PO 的集合。 PO中             应该包含任何对数据库的操作。

                           //用于存储数据,与数据库等数据源的数据一一对应,用于各层之间的数据传递。

    二、VO(业务逻辑拓展实体)

               VO:value object  值对象。通常用于业务层之间的数据传递,和  PO   一样也是仅仅包含数据而已。但应是抽象出的业务对象 ,可以和表对应,也可以不,这根据业务的需要.个人           得同DTO(数据传输对象),在web上传递。

                           //根据实际的业务要求,扩展实体类或抽象的新的类不必一定与数据库相对应,用于传递数据。

     

    三、  DAO(数据访问层对象)

               DAO:data access object  数据访问对象,此对象用于访问数据库。通常和 PO  结合使用,DAO中包含了各种数据库的操作方法。通过它的方法,结合PO 对数据库进行相关操            作。

                          DAO的优势: 

                                    1.  符合单一性原则,降低了耦合性,提高了代码复用性。

                                     2.采用面向接口编程,实现了开闭原则,降低了代码的耦合性,提高了代码的扩展性,和系统的可移植性。

                          DAO的组成:

                             1.DAO接口:把需要的操作定义在接口中,方便各个数据库分别实现。

                             2.DAO实现类:根据数据库,提供相应的实现类。

                             3.实体类(PO):存储数据

                             4.数据库具类(BaseDao):便于数据库的操作,避免代码重复。

                                  

    四、  BO(业务逻辑层对象)

               BO:business object 业务对象 封装业务逻辑的 java对象,通过调用DAO方法,结合  PO,VO 进行业务操作。

                            //被显示层调用,作用主要是隔离数据访问层和显示层。           

     

    五 、 JavaBean ()

            JavaBean : 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法         将内部域暴露成员属性。众所周知,属性名称符合这种模式,其他Java 类可以通过自省机制发现和操作这些JavaBean 的属性。

                           //JavaBean可以实现代码的重复利用,另外对于程序的易维护性等等。 

    六、 POJO ()

               POJO:plain ordinary java object 简单无规则 java对象, POJO是这样的一种“纯粹的”JavaBean,在它里面除了JavaBean规范的方法和属性没有别的东西,即private属性以及对这个属性方法的public的get和set方法。我们会发现这样的JavaBean很“单纯”,它只能装载 数据,作为数据存储的载体,而不具有业务逻辑处理的能力。

                                //用来表示普通的Java对象.

                                              

                                    

                            什么是分层开发: 根据功能把代码分成相对独立的各个功能模块,各模块只负责自己的事                                                      情。

                             分层开发的优点:1.开发人员只用专注于自己的负责的功能,提高了开发人员的专注度。

                                                         2.便于分工协作:各个开发人员可以单独完成各自的功能,只需知道相                                                        应的接口。

                                                         3.便于代码复用,只要实现了接口就可以使用,不同的类就可以组成一个新的程序。

                                                         4.便与程序扩展  ,只要实现了接口添加新的类就可以实现新的功能.

                             如何使用分层开发:

                             例:

                                java中如何分层

                                

                                              

                                     新建一个包》在包下新建一个类(不然无法创建子包,我不会不知道行不行)》创建各层的包。

                                     

                       在包下创建接口规定要操作的方法》在创建一个功能层下的子包(impl)用于实现接口》在实现包里创建实现类。

                    

                       然后就可以在每层中写相应的代码了。

                       model层(实体层):用于创建实体类 各层之间用实体类对象传递数据;

                       data层(数据访问层):实现关于数据库的操作

                       biz层(业务逻辑层):隔离据访问层和显示层,‘’可在该层完成业务判断‘’(自己猜的)

                       ui层(显示层):显示给客户的数据的各种操作(main)

                       util(工具包)各种便于编写代码的工具类

                           例:下面的代码只是实现了功能,有好些很不好的地方,写的时候想先成功了再一次过一遍,所以没改,我存学校了U盘里没有看的大神们将就下吧

                              

        model层

    package nine.model;
    
    public class ShopRecordModel {
        //记录id
        private int id;
        //身份证
        private String identity;
        //购车日期
        private String shopTime;
        //车辆识别码
        private String carID;
        //车型
        private String type;
        //官方价格
        private double  authorityPrice;
        //发票价格
        private double ticketPrice;
        //购车税
        private double carTax;
        
        //无参构造函数
        public ShopRecordModel() {
            
        }
        //带参构造
        public ShopRecordModel( String identity,  String carID,
     double authorityPrice, double ticketPrice,double paiLiang) {
            this.id = id;
            this.identity = identity;
            this.shopTime = shopTime;
            this.carID = carID;
            this.type = type;
            this.authorityPrice = authorityPrice;
            this.ticketPrice = ticketPrice;
            if (paiLiang>1.6) {
                this.carTax = (ticketPrice/1.17)*0.1;
            }else {
                this.carTax = (ticketPrice/1.17)*0.075;
            }
        
        }
         //读写
        public int getId() {
            return this.id;
        } 
        public void setId(int id) {
            this.id = id;
        }
        public String getIdentity() {
            return identity;
        }
        public void setIdentity(String identity) {
            this.identity = identity;
        }
        public String getShopTime() {
            return shopTime;
        }
        public void setShopTime(String shopTime) {
            this.shopTime = shopTime;
        }
        public String getCarID() {
            return carID;
        }
        public void setCarID(String carID) {
            this.carID = carID;
        }
        public String getType() {
            return type;
        }
        public void setType(String type) {
            this.type = type;
        }
        public double getAuthorityPrice() {
            return authorityPrice;
        }
        public void setAuthorityPrice(double authorityPrice) {
            this.authorityPrice = authorityPrice;
        }
        public double getTicketPrice() {
            return ticketPrice;
        }
        public void setTicketPrice(double ticketPrice) {
            this.ticketPrice = ticketPrice;
        }
        public double getCarTax() {
            return carTax;
        }
        public void setCarTax(double carTax) {
            this.carTax = carTax;
        }
        
    }

        数据访问层接口

      

    package nine.data;
    
    import nine.model.ShopRecordModel;
    
    public interface ShopRecord {
         boolean add(ShopRecordModel sr) throws Exception;
    }

    数据访问层实现类

    package nine.data.impl;
    
    import nine.BaseDao;
    import nine.data.ShopRecord;
    import nine.model.ShopRecordModel;
    
    public class ShopRecordDataImpl extends BaseDao implements ShopRecord {
    
        @Override
        public boolean add(ShopRecordModel sr) {
            
               BaseDao bd=new BaseDao();
             
               return   bd.executeUpdate("insert into ShopRecord values(?,?,?,?,?,?,?)",sr.getIdentity(),sr.getShopTime(),sr.getCarID(),sr.getType(),sr.getAuthorityPrice(),sr.getTicketPrice(),sr.getCarTax());
              
        }
    
    }

       业务逻辑层接口

    package nine.biz;
    
    import java.sql.SQLException;
    
    import nine.model.ShopRecordModel;
    
    public interface ShopRecordBiz {
         String add(ShopRecordModel sr) throws SQLException;
    }

       业务逻辑层实现类

        ShopRecordDataImpl srdi=new ShopRecordDataImpl();
         
        @Override
        public String add(ShopRecordModel sr) throws SQLException {
            if (srdi.add(sr)) {
                return "数据保存成功,车辆购置税为:"+sr.getCarTax();
            }else {
                
            }
            
            return "购买失败!";
        }

        显示层

        Scanner input=new Scanner(System.in);
            ShopRecordBizImpl srbi=new ShopRecordBizImpl();
            System.out.println("记录车辆购置税,请按提示录入相关信息:.");
            System.out.print("请输入车主身份证(18位):");
            String identity=input.next();
            System.out.println();
            System.out.print("请输入车辆別识码(17位):");
            String carId=input.next();
            System.out.println();
            
            System.out.print("请输入车辆排量:");
            double pai=input.nextDouble();
            System.out.println();
            System.out.print("请输入官方指导价:");
            double oldPrice=input.nextDouble();
            System.out.println();
            System.out.print("请输入发票价格:");
            double price=input.nextDouble();
            System.out.println();
            ShopRecordModel srdm=new ShopRecordModel(identity,carId,oldPrice,price,pai);
            srdm.setShopTime("2015-5-10 ");
            srdm.setType("什么");
            try {
                System.out.println(srbi.add(srdm));
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

      

  • 相关阅读:
    第一章 Java入门
    2020-2021-2 网络对抗技术 20181321 Exp 8 Web基础
    2020-2021-2 网络对抗技术 20181321 Exp7 网络欺诈防范
    2020-2021-2 网络对抗技术 20181321 Exp6 MSF基础应用
    Weblogic漏洞复现:CVE-2020-14882未授权代码执行
    利用cse-2020-16127,cve-2020-16125进行漏洞再现
    实验一-密码引擎-加密API实现与测试
    实验一-密码引擎-加密API研究
    API标准
    020-2021-2 网络对抗技术 20181321 Exp5 信息搜集与漏洞扫描
  • 原文地址:https://www.cnblogs.com/xiangtianxiayu/p/4924604.html
Copyright © 2011-2022 走看看