外观设计模式的定义
要求一个子系统的外部与其内部通信必须通过一个统一的对象进行,又称之为门面模式,提供一个高层次的接口,使得子系统更易于使用
外观设计模式更像是一个管理类,把多个功能集成在一个类中,类通过方法向外界提供功能实现,不是客户端调用真正的实现方法。
外观设计模式例子
我们把手机的电话系统和拍照系统,通过一个类来封装好,通过调用这个类的方法就可以实现相对应的功能
/**
* 打电话的系统
*/
public interface Phone {
void dail(); //打电话
void hangup(); //挂断电话
}
public class PhoneImp implements Phone {
@Override
public void dail() {
System.out.println("打电话");
}
@Override
public void hangup() {
System.out.println("挂断电话");
}
}
/**
* 拍照系统
*/
public interface Camera {
void open(); //打开相机
void takePicture(); //拍照
void close(); //关闭
}
public class CameraImp implements Camera {
@Override
public void open() {
System.out.println("打开相机");
}
@Override
public void takePicture() {
System.out.println("拍照");
}
@Override
public void close() {
System.out.println("关闭相机");
}
}
封装类
public class MobilePhone {
Phone mPhone = new PhoneImp();
Camera mCamera= new CameraImp();
//打电话
public void dail(){
mPhone.dail();
}
//挂断电话
public void hangup(){
mPhone.hangup();
}
//视频聊天
public void videoChat(){
System.out.println("----->视频链接中");
mCamera.open();
mPhone.dail();
}
//拍照
public void takePicture(){
mCamera.open();
mCamera.takePicture();
}
//关闭相机
public void closeCamera(){
mCamera.close();
}
}
public class MainActivity extends AppCompatActivity {
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MobilePhone mobilePhone= new MobilePhone();
mobilePhone.takePicture();
mobilePhone.videoChat();
}
外观设计模式在Android应用
Context类平时我们用context来startActivity()、sendBroadcast()、sendService(),这些都是封装好的调用方法。
网友评论