您的位置:首页 > 其它

设计模式之外观模式

2018-02-18 17:53 309 查看
外观模式是一种描述类于类之间关系的模式,由一个外观类将多个类进行包装,从而达到访问包装类即访问多个类的目的,看代码

普通类:public class Model {
private String name;
public Model(String name){
this.name = name;
}
public void method(){
System.out.println(name);
}
}外观类:
public class Facade {
private Model[] models;
public Facade(Model... models){
this.models = models;
}
public void method(){
for (Model model : models) {
model.method();
}
}
}
Client类:
public class Client {
public static void main(String[] args) {
Model model1 = new Model("小明");
Model model2 = new Model("小红");
Facade facade = new Facade(model1,model2);
facade.method();
}
}
这里就是简单的实现了一下封装,将从属同一类的多个对象包装在了一起,调用外观对象即可实现model类的方法;
其实不同的model类同样可以实现外观模式的包装:
model类实现的公共接口:public interface Subject {
void method();
}
model1类:public class Model1 implements Subject{
private String name;
public Model1(String name){
this.name = name;
}
public void method(){
System.out.println(name);
}
}model2类:public class Model2 implements Subject{
private String name;
public Model2(String name){
this.name = name;
}
public void method(){
System.out.println(name);
}
}外观类:
public class Facade {
private Subject[] subject;
public Facade(Subject... subject){
this.subject = subject;
}
public void method(){
for (Subject subject : subject) {
subject.method();
}
}
}
Client类:
public class Client {
public static void main(String[] args) {
Model1 model1 = new Model1("小明");
Model2 model2 = new Model2("小红");
Facade facade = new Facade(model1,model2);
facade.method();
}
}
实际上得到的结果与第一个例子相同,不同的是这个例子用到了多态;其实model类可以不继承相同的接口,也可以使用外观模式,但外观类和例子中的就不一样了;外观模式的核心思想就是将多个类包装成外观类,之后访问外观类实现功能;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: