首页 > 其他分享 >设计模式(6)--外观模式

设计模式(6)--外观模式

时间:2023-01-06 10:39:20浏览次数:34  
标签:外观 off -- dvd void popcorn Popcorn 设计模式 public


  • 外观模式原理
  • 一个家庭影院的项目:
  • 在家庭影院中引入第二个遥控器用来调用各个功能放在一个接口上
  • 外观模式提供统一接口,来访问子系统中一群功能相关的接口,外观模式定义了一个高层接口,让子系统更容易使用。
  • 外观模式就是使用一个函数调用系统中的很多函数
  • 代码讲解:
package waiguan;
/**
* Created with IntelliJ IDEA.
* Description:
* User: wjx
* Date: 2019-04-20
* Time: 19:44
*/
public class DVD {
private static DVD dvd = null;
private DVD(){


}
public static DVD getInstance(){
if(dvd == null){
dvd = new DVD();
}
return dvd;
}
public void on(){
System.out.println("Dvd is on");
}
public void off(){
System.out.println("Dvd is off");
}
}
package waiguan;


/**
* Created with IntelliJ IDEA.
* Description:
* User: wjx
* Date: 2019-04-20
* Time: 19:44
*/
public class Popcorn {
private Popcorn(){


}
private static Popcorn popcorn = null;
public static Popcorn getInstance(){
if(popcorn==null){
popcorn = new Popcorn();
}
return popcorn;
}
public void on(){
System.out.println("Popcorn is on");
}
public void off(){
System.out.println("Popcorn is off");
}
}
  • 由家庭影院统一调用:
package waiguan;

/**
* Created with IntelliJ IDEA.
* Description:
* User: wjx
* Date: 2019-04-20
* Time: 19:48
*/
public class HomeMedia {
private DVD dvd;
private Popcorn popcorn;
public HomeMedia(){
dvd = DVD.getInstance();
popcorn = Popcorn.getInstance();
}
public void on(){
dvd.on();
popcorn.on();
}
public void off(){
dvd.off();
popcorn.off();
}
}
  • 测试:
package waiguan;

/**
* Created with IntelliJ IDEA.
* Description:
* User: wjx
* Date: 2019-04-20
* Time: 19:50
*/
public class MainTest {
public static void main(String[] args) {
HomeMedia homeMedia = new HomeMedia();
homeMedia.on();
homeMedia.off();
}
}
  • 外观模式使这个系统中的对象对外的耦合度降低,所以加一个功能,遥控器就不需要更改,只需要该相应得功能就可以,使得系统对外部解耦。
  • 外观模式和适配者模式的对比:
  • 适配者模式:适配器把一个类和对象的接口转换成另一种模式
  • 外观模式系统提供的对外功能的简化的功能的表现


标签:外观,off,--,dvd,void,popcorn,Popcorn,设计模式,public
From: https://blog.51cto.com/u_13987312/5992391

相关文章

  • Drawable与Bitmap详解
    Drawable与Bitmap对比定义对比:Bitmap:称作位图,一般的位图的文件格式扩展名为.bmp,当然编码器也有很多,RGB565,RGB8888,作为一种追个像素的显示对象,执行效率高,但是存储效率低,可以......
  • 设计模式(3)--观察者模式
    概要:观察者模式原理观察者模式实例Java内置观察者Internet气象站项目:提供温度、气压和温度的接口测量数据更新时需实时的通知第三方需要设计开放性API,便于其他第三方公司......
  • Docker私有仓库以及Docker shell
    Docker搭建私有仓库公有云:比如百度云,dockerhub私有云:比如搭建到某个内网,docker搭建私有仓库:下载一个镜像docker默认使用的是dockerhubdocker仓库服务器就是docker注册服务......
  • Android画布(二)ShapeDrawable常用函数
    ShapeDrawable常用函数setBounds()用来指定当前ShapeDrawable在当前控件中的显示位置setBounds(intleft,inttop,intright,intbottom)setBounds(Rectbounds)getPaint......
  • 编写Dockerfile文件
    Dockerfile可以完成一些批量化的工作cdlsmkdirdockerfilecddockerfile/lsvimDockerfile//指定基础的镜像Fromcentos:latest//维护者信息MAINTAINERwjx//shell命令RUN......
  • Andorid自定义动画 文字与画布(一)
    Paint设置//设置画笔宽度paint.setStrokeWidth(5);//指定抗锯齿功能paint.setAntiAlias(true);//绘图样式paint.setStyle(Paint.Style.FILL);//设置文字对齐方式paint.setTe......
  • 物联网移动APP架构设计
    Android系统架构应用层SMS短信客户端程序、电话拨号程序、图片浏览器、Web浏览器等。这些应用程序都是用Java语言编写的,并且都是可以被开发人员开发的其他应用程序所替换应......
  • 基于Mockito的Android应用单元测试
    Mockito是java开发中常用的Mock库,在Android应用单元测试中比较常见在实际的单元测试中,测试的类之间会有或多或少的耦合,导致无法顺利的进行测试,这是就可以使用Mockito,该库可......
  • Dagger2依赖注入框架
    Dagger2简介:Dagger:“AfastdependencyinjectorforAndroidandJava“,其最大的好处就是莫跨界见解耦,这个耦合是由类之间的以来引起的,依赖注入的配置独立于初始化出,配......
  • MSTP配置
    全网所有交换机都要配置如下命令,包括接入,汇聚交换机:stpregion-configuration   region-nameHuawei    revision-level12    instance10vlan10......