Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #37159

Re: Is this a correct implementation of an abstract class and implementation class

Path csiph.com!aioe.org!.POSTED!not-for-mail
From Arne Vajhøj <arne@vajhoej.dk>
Newsgroups comp.lang.java.programmer
Subject Re: Is this a correct implementation of an abstract class and implementation class
Date Sat, 12 Aug 2017 22:00:24 -0400
Organization Aioe.org NNTP Server
Lines 55
Message-ID <omobrn$mvm$1@gioia.aioe.org> (permalink)
References <87r2wgxz2p.fsf@munus.decebal.nl>
NNTP-Posting-Host PBuS014lhzVyHjLbXmo/ZQ.user.gioia.aioe.org
Mime-Version 1.0
Content-Type text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding 7bit
X-Complaints-To abuse@aioe.org
User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.2.1
Content-Language en-US
X-Notice Filtered by postfilter v. 0.8.2
Xref csiph.com comp.lang.java.programmer:37159

Show key headers only | View raw


On 8/12/2017 5:20 PM, Cecil Westerhof wrote:
> I want to write a layer around JDBC. For this I have an abstract class
> SQL in which I have the following constructor and abstract methods:
>      // ################ constructors
>      public SQL (String database) throws SQLException {
>          String forName   = getForName();
>          String sqlDriver = getSQLDriver();
> 
>          try {
>              Class.forName(forName);
>          } catch (ClassNotFoundException e) {
>              throw new SQLException("Could not find the class " + forName + ".");
>          }
>          conn = DriverManager.getConnection(sqlDriver + database);
>          this.database = database;
>      }
> 
>      // ################ abstract
>      abstract String getForName();
>      abstract String getSQLDriver();
> 
> 
> I have also an implementation class SQLite3 in which I have:
>      // ################ constructors
>      public SQLite3 (String database) throws SQLException {
>          super(database);
>      }
> 
>      // ################ default
>      @Override
>      String getForName() {
>          return "org.sqlite.JDBC";
>      }
> 
>      @Override
>      String getSQLDriver() {
>          return "jdbc:sqlite:";
>      }
> 
> Is this the correct way to do this, or is there a better way?

I have done something similar many times.

I like the approach.

:-)

I assume you are aware that with newer Java versions then
Class.forName is not required.

And I would rename getSQLDriver to getURLPrefix.

Arne

Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Is this a correct implementation of an abstract class and implementation class Cecil Westerhof <Cecil@decebal.nl> - 2017-08-12 23:20 +0200
  Re: Is this a correct implementation of an abstract class and implementation class Arne Vajhøj <arne@vajhoej.dk> - 2017-08-12 22:00 -0400
    Re: Is this a correct implementation of an abstract class and implementation class Cecil Westerhof <Cecil@decebal.nl> - 2017-08-13 07:14 +0200
    Re: Is this a correct implementation of an abstract class and implementation class Andreas Leitgeb <avl@logic.at> - 2017-08-13 09:37 +0000
      Re: Is this a correct implementation of an abstract class and implementation class Andreas Leitgeb <avl@logic.at> - 2017-08-13 10:13 +0000
        Re: Is this a correct implementation of an abstract class and implementation class Arne Vajhøj <arne@vajhoej.dk> - 2017-08-13 16:27 -0400
      Re: Is this a correct implementation of an abstract class and implementation class lewbloch@gmail.com - 2017-08-13 09:49 -0700
      Re: Is this a correct implementation of an abstract class and implementation class Arne Vajhøj <arne@vajhoej.dk> - 2017-08-13 16:25 -0400
  Re: Is this a correct implementation of an abstract class and implementation class Cecil Westerhof <Cecil@decebal.nl> - 2017-08-13 07:33 +0200

csiph-web