DAO设计

  • 易瓜网
  • 2025-02-16 15:12:42

  DAO设计

  DAO设计

  抽象工厂模式和工厂模式联系

  Dao设计模式(Data Access Object),称为数据访问对象dao模式包括什么。它是对于数据库操作的一种设计方式,把Dao设计为一个通用接口,提供对数据库进行增、删、改、查的一系列操作数据库的抽象方法。

  DAO(Data Access Objects)设计模式属于JavaEE数据层的操作dao模式的组成部分。使用DAO设计模式可以简化代码量和提高程序的可移植性

  DAO设计模式组成部分 :不同的包是放功能不同的类。

  一般将DAO划分以下的部分:

  1.VO(Value Object)类:也就是类,由属性以及属性的set()和get()方法组成。VO类中的成员变量要与数据库的表中的字段想对应dao的设计模式。

  2.类:用于打开和关闭数据库操作的类

  3.DAO接口类:用于声明数据库的操作,定义对数据库的原子性操作,如增加、修改、删除在实现dao设计模式时,下面。在定义接口类之前,要分析业务需求,分析清楚系统需要哪些功能、方法,比如一些简单的增加、查询。DAO接口定义完成后需要定义它的实现类,为了降低耦合度,用了两种实现:(1)一种是数据操作实现类,也就是DAOImpl类(2)另一种业务操作实现类,也就是类

  4.DAOImpl类:实现DAO接口的方法,主要负责具体的数据库操作,但不负责数据库的打开和关闭dao模式包括什么。此类通过有参构造方法取得数据库的连接

  5.类:也是实现DAO接口的类,主要完成数据库的打开和关闭dao设计模式和mvc。在无参构造方法中实例化数据库连接,同时实例化DAO对象,也就是:private DAO dao; dao=new DAOImpl(得到数据库连接的方法);,在每个方法操作完成之后必须记得关闭数据库

  6.类:工厂类,用来获得类,在后续的客户端中就可以直接通过工厂类获得DAO接口的实例对象。

  DAO设计

  工厂模式、简单工厂模式、抽象工厂模式三者的区别:

  1、创建对象不同。创建对象时,“工厂模式”使用Factory模式替代使用new创建对象;“简单工厂模式”使用fw模式建立对象;“抽象工厂模式”则使用迭代模式创建对象java dao设计模式。

  2、定义变量不同。“工厂模式”不用事先定义变量,使用时随时引用便可。“简单工厂模式”,使用参数或者配置文件等事先定义好的变量,然后利用分支判断初始化具体产品类并返回dao模式包括什么。“抽象工厂模式则”不符合“开发-封闭”原则,每次增加产品,都需要修改类方法。

  3、接口数量不同。“工厂模式”有两至三个接口dao模式的组成部分。“简单工厂模式”只有一个接口。抽象工厂模式理论上具有无限个接口。

  扩展资料

  编程使用“工厂模式”的优缺点:

  DAO设计

  1、优点:

  方便扩展算法,比如增加一个开根号的功能,我们只要继续继承运算类就行了,同时客户端也就是使用者不知道具体的实现细节,只要给出相关标示符,工厂函数就马上给他创建一个他想要的实体就行了。减少了使用者和功能开发者之间的耦合度java dao设计模式。

  2、缺点:

  在进行扩展的时候,我们要更改工厂函数里面的那个分支语句Switch,这样便破坏了OCP,而且当有多级结构继承的时候,简单工厂就会因为只能对应平行一层记得继承,不得不使得好多类继承同一个接口,然后得到A*B这么多的工厂实体可能,工厂函数很难维护dao模式的组成部分。

  工厂模式,简单工厂模式,抽象工厂模式三者区别如下:

  1、首先,三者的创建对象是不相同的。

  进行创建对象时,“工厂模式”不使用new创建对象,而是使用Factory模式;“简单工厂模式”则是通过fw模式来建立对象;“抽象工厂模式”使用迭代模式来创建对象dao框架。

  2、其次,三者的定义变量不同。

  “工厂模式”在使用时可以随时设置变量,不用提前进行设置。“简单工厂模式”中需要使用参数或者配置文件等已经定义好的变量,然后才能进行下一步的操作。“抽象工厂模式则”则需要每次增加产品时,进行修改类方法dao设计模式和mvc。

  3、最后,三者的接口数量不同。“工厂模式”可以使用两个接口以及三个接口,“简单工厂模式”只可以使用一个接口dao设计模式和mvc。“抽象工厂模式”则可以使用无限个接口。

  扩展资料:

  简单工厂模式优缺点

  1、优点:工厂类含有必要的判断逻辑,可以决定在什么时候创建哪一个产品类的实例,客户端可以免除直接创建产品对象的责任,而仅仅"消费"产品。简单工厂模式通过这种做法实现了对责任的分割dao模式包括什么。

  当产品有复杂的多层等级结构时,工厂类只有自己,以不变应万变,就是模式的缺点。因为工厂类集中了所有产品创建逻辑,一旦不能正常工作,整个系统都要受到影响dao设计模式的主要功能。

  2、缺点:系统扩展困难,一旦添加新产品就不得不修改工厂逻辑,有可能造成工厂逻辑过于复杂,违背了"开放--封闭"原则(OCP)dao的设计模式。另外,简单工厂模式通常使用静态工厂方法,这使得无法由子类继承,造成工厂角色无法形成基于继承的等级结构。

  参考资料来源:易瓜网百科-工厂模式

  工厂模式的好处就在于将工厂和产品之间的耦合降低,将具体产品的构造过程放在了具体工厂类里面。在以后扩展产品的时候方便很多,只需要添加一个工厂类,一个产品类,就能方便的添加产品,而不需要修改原有的代码。而在简单工厂中,如果要增加一个产品,则需要修改工厂类,增加if/else分支,或者增加一个case分支,工厂模式符合软件开发中的OCP原则(open close ),对扩展开放,对修改关闭dao框架。

  抽象工厂模式:这个模式我总是感觉和builder模式非常相似。

  工厂方法模式提供的是对一个产品的等级模式,,而抽象工厂方法提供的是对多个产品的等级模式,注意,这里的多个具体产品之间是相互耦合的,也就是说这里的抽象工厂提供的产品之间是存在某种联系的dao的设计模式。

  有人做如下的比较:

  工厂方法模式:一个抽象产品类,可以派生出多个具体产品类。

  一个抽象工厂类,可以派生出多个具体工厂类。

  每个具体工厂类只能创建一个具体产品类的实例。

  抽象工厂模式:多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。

  一个抽象工厂类,可以派生出多个具体工厂类。

  每个具体工厂类可以创建多个具体产品类的实例。

  区别:工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个。

  工厂方法模式的具体工厂类只能创建一个具体产品类的实例,而抽象工厂模式可以创建多个。

  下面是一个形象的比喻:

  无论是简单工厂模式、工厂模式还是抽象工厂模式,它们本质上都是将不变的部分提取出来,将可变的部分留作接口,以达到最大程度上的复用dao模式的组成部分。拿一个生产水杯(cup)的工厂举例:起初,不用工厂模式,我必须在生产水杯之前知道水杯的材料和形状等水杯的所有特征才能生产,这就是我们的new Cup();这个Cup必须是具体的。厂主发现同一形状的被子,只是材料不同,如一个是玻璃(glass)的,一个是瓷(china)的,但是确要两条生产线,显然有资源浪费的嫌疑dao设计模式的主要功能。现在厂主生产杯子时先不让生产线知道我要产的是玻璃的还是瓷的,而是让它在不知道具体材料的情况下先做它能做的,等到它把模具做好,只需要向其中填充玻璃原料或者瓷原料就可以造出同一形状的具体杯子了。但是很可惜,java并不能new一个抽象的Cup,所以就有了简单工厂模式dao框架。原来是Cup cup=new Cup;现在是.(String cupName),根据cup的名字生产Cup,而返回的是一个实现了 Cup接口或抽象类的具体Cup。简单抽象工厂模式有一个问题,就是当我现在想生产一个同样形状的铁杯时,工厂里并没有定义相应的处理流程,只能更改方法,这就不合理了。我现在只是想生产铁杯,你只要在最后的时候把玻璃原料换成铁的不就行了吗,干嘛还要更改整条生产线呢?于是就有了工厂模式。原来生产线在生产模具的时候还要考虑是为玻璃杯生产的模具还是为铁杯生产的模具,现在它不用管了。.()创建Cup.是接口或抽象类。实现它的具体子类会创建符合Cup接口的具体Cupdao模式的组成部分。那么现在厂主想要生产水壶(kettle),用工厂模式就不得不再造一条水壶生产线,能不能在水杯生产线同时生产水壶呢?这就是抽象工厂模式。

  工厂模式的好处就在于将工厂和产品之间的耦合降低,将具体产品的构造过程放在了具体工厂类里面。在以后扩展产品的时候方便很多,只需要添加一个工厂类,一个产品类,就能方便的添加产品,而不需要修改原有的代码。而在简单工厂中,如果要增加一个产品,则需要修改工厂类,增加if/else分支,或者增加一个case分支,工厂模式符合软件开发中的OCP原则(open close ),对扩展开放,对修改关闭。

  抽象工厂模式:这个模式我总是感觉和builder模式非常相似。

  工厂方法模式提供的是对一个产品的等级模式,,而抽象工厂方法提供的是对多个产品的等级模式,注意,这里的多个具体产品之间是相互耦合的,也就是说这里的抽象工厂提供的产品之间是存在某种联系的。

  有人做如下的比较:

  工厂方法模式:一个抽象产品类,可以派生出多个具体产品类。

  一个抽象工厂类,可以派生出多个具体工厂类。

  每个具体工厂类只能创建一个具体产品类的实例。

  抽象工厂模式:多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。

  一个抽象工厂类,可以派生出多个具体工厂类。

  每个具体工厂类可以创建多个具体产品类的实例。

  区别:工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个。

  工厂方法模式的具体工厂类只能创建一个具体产品类的实例,而抽象工厂模式可以创建多个。

  下面是一个形象的比喻:

  无论是简单工厂模式、工厂模式还是抽象工厂模式,它们本质上都是将不变的部分提取出来,将可变的部分留作接口,以达到最大程度上的复用。拿一个生产水杯(cup)的工厂举例:起初,不用工厂模式,我必须在生产水杯之前知道水杯的材料和形状等水杯的所有特征才能生产,这就是我们的new Cup();这个Cup必须是具体的。厂主发现同一形状的被子,只是材料不同,如一个是玻璃(glass)的,一个是瓷(china)的,但是确要两条生产线,显然有资源浪费的嫌疑。现在厂主生产杯子时先不让生产线知道我要产的是玻璃的还是瓷的,而是让它在不知道具体材料的情况下先做它能做的,等到它把模具做好,只需要向其中填充玻璃原料或者瓷原料就可以造出同一形状的具体杯子了。但是很可惜,java并不能new一个抽象的Cup,所以就有了简单工厂模式。原来是Cup cup=new Cup;现在是.(String cupName),根据cup的名字生产Cup,而返回的是一个实现了 Cup接口或抽象类的具体Cup。简单抽象工厂模式有一个问题,就是当我现在想生产一个同样形状的铁杯时,工厂里并没有定义相应的处理流程,只能更改方法,这就不合理了。我现在只是想生产铁杯,你只要在最后的时候把玻璃原料换成铁的不就行了吗,干嘛还要更改整条生产线呢?于是就有了工厂模式。原来生产线在生产模具的时候还要考虑是为玻璃杯生产的模具还是为铁杯生产的模具,现在它不用管了。.()创建Cup.是接口或抽象类。实现它的具体子类会创建符合Cup接口的具体Cup。那么现在厂主想要生产水壶(kettle),用工厂模式就不得不再造一条水壶生产线,能不能在水杯生产线同时生产水壶呢?这就是抽象工厂模式。

  相信看完以上的内容,大家对于DAO设计以及其他几个相关问题都有了比较全面且深刻的理解。如果大家还有不明白的地方,欢迎后台留言。