基于上个文章我们写了组合设计模式。
基于组合设计模式的特点:部分和整体组成一个链路,今天的外观设计模式其实是和组合模式有相似之处,个人理解来说外观模式才算是组合模式,因为更容易理解,为什么这么说等下你就知道我说的什么意思。
为什么使用外观设计模式?外观模式有什么优缺点?
外观模式属于结构型,结构型的设计模式都有一个特点,整体的组合是一条链路,把相关的代码和类抽取封装,让代码整体是一个不可改变的结构。外观设计模式的特点就是抽取不同的代码类,组合成一个实现调用,从而让代码不关心具体实现和使用。
举个列子好比java程序的Object对象,我们的基本数据类型,Integer,String ,char,Boolean ,long等等Object都是所有类型的父类,如果我需要进行数字和字符转换的时候就可以使用Object接收这个类型,我同时可能要创建俩个对象和多个对象的同时。但是使用object对象只需要完成一次接收多次转换就行。
外观设计模式的引用场景:需要整合业务的链路抽取,多个相似的行为需要关联的时候采用。
举个例子:我一天需要吃饭睡觉上班,学习,运动,但是这是我一天必须要做的事情,不同的行为
就是我今天的一天。
类图:
我的一天学习,吃饭,睡觉,有时间在打下豆豆
我的一天:
package com.xy.design.appearance;
/**
* <p>
*
* @author yang
* @since 2022-10-23
*/
public class MyDay {
public void bussiess(){
LeanCode leanCode = new LeanCode();
Eat eat = new Eat();
Sleep sleep = new Sleep();
leanCode.getLean();;
eat.getEatRice();
sleep.getSleep();
}
}
学习:
package com.xy.design.appearance;
/**
* <p>
*
* @author yang
* @since 2022-10-23
*/
public class LeanCode {
public void getLean(){
System.out.println("我要开始学习.........");
}
}
吃饭:
package com.xy.design.appearance;
/**
* <p>
*
* @author yang
* @since 2022-10-23
*/
public class Eat {
public void getEatRice(){
System.out.println("我要开始吃饭了............");
}
}
睡觉:
package com.xy.design.appearance;
/**
* <p>
*
* @author yang
* @since 2022-10-23
*/
public class Sleep {
public void getSleep(){
System.out.println("我要开始睡觉了........");
}
}
外观模式的优缺点:
优点是让代码有层次感,能够结构化,如果我一天做的事情多了,我在吃饭的方法去打游戏,看电视,在睡觉,在睡觉的方法去看书等,会让代码变动不容易改动,我们通过部分提前为一个整体的概念完成了外观模式的设计。
缺点:不能完全抽取业务代码,会增加代码冗余性,其实整体设计看着没有毛病,但是对于负责的业务场景外观设计模式不能完全提高代码的健壮性。
其实你只是完成了代码的抽取提取了一个对象出来把代码统一调用和实现,但是业务还是没有变化,如果有新的业务需要重新去改动我们统一封装的类。
————没有与生俱来的天赋,都是后天的努力拼搏(我是小杨,谢谢你的关注和支持)