1.当两个业务类有相同的逻辑,我们可以让他们继承同一个父类
(1)父类
public abstract class Father {
//抽象方法,获取实例对象
protected abstract Father getInstence();
protected abstract String getSql();
//实际业务
protected void doAnalays(){
Father instence = getInstence();
//执行公共的逻辑
String sql = getSql();
if(instence instanceof Childer1){
Childer1 child1 = (Childer1)instence;
//执行1的私有
child1.c1_p(sql);
}else{
Childer2 child2 = (Childer2)instence;
//执行2的私有
child2.c2_p(sql);
}
}
}
(2)Childer1
public class Childer1 extends Father{
@Override
protected Father getInstence() {
return new Childer1();
}
@Override
protected String getSql() {
return "Childer1";
}
public void c1_p(String sql){
System.out.println("这是childer1的私有方法,打印sql:"+sql);
}
}
(3)Childer2
package cn.huawei;
public class Childer2 extends Father{
@Override
protected Father getInstence() {
return new Childer2();
}
@Override
protected String getSql() {
return "Childer2";
}
public void c2_p(String sql){
System.out.println("这是childer2的私有方法,打印sql:"+sql);
}
}
执行如下:
public static void main(String[] args) {
new Childer2().doAnalays();
}
:这是childer2的私有方法,打印sql:Childer2
总结:在这个例子中,有使用到父类的公共方法和子类的私有方法