核心:将两个独立变化的维度分开,只让他们在各自的维度变化,实现了两个类的松耦合
public class Test{
public static void main(String[] args) {
Shape shape = new Circle();
Color color = new Red();
shape.setColor(color);
shape.draw();
}
}
abstract class Shape{
Color color;
public void setColor(Color color){
this.color = color;
}
public abstract void draw();
}
class Circle extends Shape{
public void draw(){
color.paint("圆形");
}
}
class Square extends Shape{
public void draw(){
color.paint("正方形");
}
}
interface Color{
void paint(String name);
}
class Red implements Color{
@Override
public void paint(String name){
System.out.println("红色的" + name);
}
}
class Green implements Color{
@Override
public void paint(String name) {
System.out.println("绿色的" + name);
}
}