设计模式之外观模式

xiaoxiao2021-02-28  28

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

普通类:

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类可以不继承相同的接口,也可以使用外观模式,但外观类和例子中的就不一样了;外观模式的核心思想就是将多个类包装成外观类,之后访问外观类实现功能;
转载请注明原文地址: https://www.6miu.com/read-2626542.html

最新回复(0)