设计模式之外观模式
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);
}
}外观类:
其实不同的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 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类可以不继承相同的接口,也可以使用外观模式,但外观类和例子中的就不一样了;外观模式的核心思想就是将多个类包装成外观类,之后访问外观类实现功能;
相关文章推荐
- 设计模式10 - 外观模式Facede
- 设计模式学习-Facade(外观)
- 设计模式之-外观模式
- 【设计模式】—-(10)外观模式(结构型)
- Android的开发之&java23中设计模式------>外观模式
- 设计模式学习笔记--Façade外观模式
- 23种设计模式-9.外观模式(Facade Pattern)
- 设计模式C++实现--外观模式、组合模式
- 23种设计模式 第二部分 结构模式(4) 外观模式
- Android 设计模式实战笔记 外观模式(统一编程接口)
- Java设计模式之外观模式(Facade模式)介绍
- 设计模式-外观模式
- 设计模式-外观模式
- 设计模式之外观模式
- 【设计模式】外观模式
- iOS设计模式:外观模式
- 设计模式-外观模式
- 【设计模式】外观模式——“知道有它就行了,内容不要你懂。”
- 设计模式(八)——外观模式
- 设计模式之外观模式——一键电影模式