开闭原则

suaxi
2022-08-19 / 0 评论 / 33 阅读 / 正在检测是否收录...

定义:对扩展开放,对修改关闭

开闭原则UML.png

以输入法更换皮肤为例

抽象皮肤类

public abstract class AbstractSkin {

    /**
     * 显示方法
     */
    public abstract void display();
}

默认皮肤

public class DefaultSkin extends AbstractSkin {

    @Override
    public void display() {
        System.out.println("默认皮肤");
    }
}

自定义皮肤

public class TestSkin extends AbstractSkin {

    @Override
    public void display() {
        System.out.println("测试皮肤");
    }
}

搜狗输入法

public class SouGouInput {

    private AbstractSkin skin;

    public void setSkin(AbstractSkin skin) {
        this.skin = skin;
    }

    public void display() {
        skin.display();
    }
}

测试

public class Client {
    public static void main(String[] args) {
        //1.创建输入法对象
        SouGouInput input = new SouGouInput();

        //2.创建默认皮肤对象
        //DefaultSkin skin = new DefaultSkin();
        TestSkin skin = new TestSkin();

        //3.将皮肤设置到输入法中
        input.setSkin(skin);

        //4.显示皮肤
        input.display();
    }
}
0

评论 (0)

取消