编程时为了提高复用性、可维护性,我们希望把共性的东西提取到一处,这是很自然的想法。但是往往有的时候不是那么容易提取共性, 因为他只是类似,并非一致,又夹杂着差异。典型的例子是JDBC代码。
那么为了实现这种情况下的复用,唯有使粒度变小,将基本的原子操作提为共性。
类图如下:
People类
public abstract class People {
abstract void cookWater();
abstract void cleanVegetable();
abstract void washDishes();
void cook(){
cleanVegetable();
cookWater();
washDishes();
}
}
ConcretePeople_A类
public class ConcretePeople_A extends People {
@Override
void cookWater() {
System.out.println("A: water has been cooked");
}
@Override
void cleanVegetable() {
System.out.println("A: vegetable has been cleaned");
}
@Override
void washDishes() {
System.out.println("A: dishes have been washed");
}
}
ConcretePeople_B类
public class ConcretePeople_B extends People {
@Override
void cookWater() {
System.out.println("B: water has been cooked");
}
@Override
void cleanVegetable() {
System.out.println("B: vegetable has been cleaned");
}
@Override
void washDishes() {
System.out.println("B: dishes have been washed");
}
}
main方法:
public class Main {
public static void main(String[] args){
People a=new ConcretePeople_A();
People b=new ConcretePeople_B();
a.cook();
b.cook();
}
}

本文探讨了在编程中如何通过细化操作来提高代码的复用性和可维护性,特别是针对那些只有部分相似而非完全相同的场景。通过一个具体的例子——不同实现的烹饪过程——展示了如何将基本操作抽象出来作为共性。
93

被折叠的 条评论
为什么被折叠?



