Template Method Örüntüsünü(Pattern) bildigim kadarı ile örnekleyerek açıklayacam.
VT bağımsızlığını ele alan bir framework geliştireceğimi varsayımı altında , yapının Oracle, MS SQL ve diğer VT lerini destekleyeceğini dusunelim. Yapmamız gerekenler...
1. sürücüleri yükleme
2. iletişimi sağlama (send connection)
3. sorguyu çalıştırmak
4. dataset i oluşturma
Amaç,
1) alt sınıflara süper sınıfın davranışlarını aktarmak
2) duplication kodu engellemek
3) alt sınıfın davranışını kontrol etmek
Buradaki asıl özgürlük abstract metodu override eden subclass ların bu metodları implement ediş biçimidir, yani aynı işi farklı farklı yöntemlerle çözümü mevcut örneğin bu örneği düşünürsek her VT nin sorguları optimize etme şekli farklıdır. Bizi ilgilendiren nasıl yaptığı değil nasıl kullanacağımızdır. Özgürlükten bahsettik işte bu özgürlük büyük güç katmaktadır.
public abstract class CommanVT {
protected Connection connection;
abstract void driverYukle();
abstract Connection getConnection(String url, String userId, String password);
abstract Object executeQuery(String query);
final void doQuery(String url, String userId, String password, String query,
Object obj){
driverYukle();
setConnection(url, userId, password);
//Query’i SQL’e donusturmek ve optimize etmek için yazılan kod
//Gerekli kodlamalar burda yapılmakta Query baska bir
//syntax la yazılmış varsayımı altında...
obj = executeQuery(query);
}
}
public class Oracle extends CommanVT{
@Override
void driverYukle() {
System.out.println("Oracle Driver Load");
}
@Override
void setConnection(String url, String userId, String password) {
System.out.println("Oracle connection");
}
@Override
Object executeQuery(String query) {
System.out.println("Oracle execute Query");
}
}
public class PostgreSQL extends CommanVT{
@Override
void driverYukle() {
System.out.println("PostgreSQL load");
}
@Override
void setConnection(String url, String userId, String password) {
System.out.println("PostgreSQL connection");
}
@Override
Object executeQuery(String query) {
System.out.println("PostgreSQL execute");
}
}
24 Mart 2008 Pazartesi
Kaydol:
Kayıt Yorumları (Atom)
Hiç yorum yok:
Yorum Gönder