0
点赞
收藏
分享

微信扫一扫

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

天涯学馆 2022-03-31 阅读 96
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 条评论