0
点赞
收藏
分享

微信扫一扫

设计模式-02-设计模式六大原则

天涯学馆 2022-03-31 阅读 98
java

一、开闭原则

开闭原则的意思是:对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。简言之,是为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类。后面的具体设计中我们会提到这点。

实例介绍:模拟输入法更换皮肤

1、创建一个抽象的皮肤类,里边含有抽象的显示的方法

package SP_1_OpenClosePrinciple;

/**
 * @Author: {LZG}
 * @ClassName: AbstractSkin
 * @Description: 一个抽象的皮肤类
 * @Date: 2022/3/31 0:58
 **/
public abstract class AbstractSkin {
    //  显示的方法
    abstract void display();
}

2、创建两个具体的皮肤类、并重写显示的方法

默认皮肤类

package SP_1_OpenClosePrinciple;

/**
 * @Author: {LZG}
 * @ClassName: DefaultSkin
 * @Description: 一个默认的皮肤类
 * @Date: 2022/3/31 1:00
 **/
public class DefaultSkin extends AbstractSkin{
    @Override
    void display() {
        System.out.println("默认皮肤");
    }
}

LOL皮肤类

package SP_1_OpenClosePrinciple;

/**
 * @Author: {LZG}
 * @ClassName: LOLSkin
 * @Description: LOL默认皮肤
 * @Date: 2022/3/31 1:01
 **/
public class LOLSkin extends AbstractSkin{
    @Override
    void display() {
        System.out.println("一个英雄联盟的默认皮肤类");
    }
}

3、创建一个输入法类,目的是注入具体的皮肤

package SP_1_OpenClosePrinciple;

/**
 * @Author: {LZG}
 * @ClassName: SkinInput
 * @Description: 输入法
 * @Date: 2022/3/31 1:02
 **/
public class SkinInput {
    private AbstractSkin abstractSkin;

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

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


}

4、模拟一个客户设置皮肤过程

package SP_1_OpenClosePrinciple;

/**
 * @Author: {LZG}
 * @ClassName: Client
 * @Description: 模拟客户设置皮肤
 * @Date: 2022/3/31 1:05
 **/
public class Client {
    public static void main(String[] args) {
        //  1、创建输入法对象
        SkinInput skinInput = new SkinInput();
        //  2、创建皮肤对象
        // DefaultSkin skin = new DefaultSkin();
        LOLSkin skin = new LOLSkin();
        //  3、将皮肤设置到输入法
        skinInput.setSkin(skin);
        //  4、显示皮肤
        skinInput.display();
    }
}

流程的文本解释:

        ①生成一个输入法

        ②选择需要显示的皮肤

        ③将选择好的皮肤确定注入输入法中

        ④查看显示的效果

运行结果

总结:对扩展开放:如果在想要一个新的皮肤可以直接生成一个类,客户直接选择那个生成的类即可,对原有的代码不做任何改动。

 

举报

相关推荐

0 条评论