最近有点忙,没什么时间来写博客,所以一闲下来就想起来,还有很多的模式没有跟大家一起分享,所以今天就来跟大家一起谈谈设计模式之外观模式。
1.什么是外观模式?
说实话,平常我很少看见跟外观模式有关的一些讲解,(也可能是我孤陋寡闻吧)。
闲话就不多说了,不管怎样我们先来看看外观模式的定义:
为子系统的一组接口提供一个一致的界面,使这个子系统变得更加的容易使用。
在这里我们要注意的是接口,这里的接口不是我们平常所使用的interface,这里它可以使interface,但是也可以使一个类的方法,或者变量,一句话就是除了接口还有类。
2.什么时候使用?
我觉得这是我们最关心的话题,在我的心里我觉得设计模式无非不是设计原则的实现(这里是最少知识原则),使用模式会使我们开发更有效率。那么我们什么时候使用呢?个模式?
我觉得外观模式其实它的本质是:降低对象之间的耦合度,减少系统之间的依赖,使开发维护更简单。
我觉得对于一个模式的初步了解这样就已经足够了,说太多的理论知识会把人绕晕的,明白原理,然后在实际的项目中运用,再运用,我觉得这个才是最重要的。
为了更好的理解,下面我通过一个很简单的例子来谈谈,希望人人都能举一反三,当然这也包括我。
再看看图理解一下:
看完后,我们来通过代码来实现一个例子:斗地主
斗地主我们是不是要有三个人才行,所以
第一步创建一个Person的接口:
package com.zqu.yqy.scdn.test.test002;
public interface Person {
void showInformation();
}
第二步实现类:(2个农民,一个地主)
package com.zqu.yqy.scdn.test.test002;
public class farmer1 implements Person {
@Override
public void showInformation() {
System.out.println("我叫张三,我是农民1");
}
}
package com.zqu.yqy.scdn.test.test002;
public class farmer2 implements Person{
@Override
public void showInformation() {
System.out.println("我是李四,我是农民2");
}
}
package com.zqu.yqy.scdn.test.test002;
public class landHolder implements Person {
@Override
public void showInformation() {
System.out.println("我是老板,你们不能问我的名字,因为我是地主");
}
}
然后是一个游戏接口:
package com.zqu.yqy.scdn.test.test002;
public class FaceInterface {
public void fightTheLandlord(){
Person p1 = new farmer1();
Person p2 = new farmer2();
Person p3 = new landHolder();
System.out.println("斗地主开始。。。。。。。");
System.out.println("谁是农民?");
p1.showInformation();
p2.showInformation();
System.out.println("谁是地主?");
p3.showInformation();
System.out.println("知道谁是地主后,我们开始打牌吧。。。");
}
}
package com.zqu.yqy.scdn.test.test002;
public class client {
public static void main(String[] args) {
FaceInterface f = new FaceInterface();
f.fightTheLandlord();
}
}
运行的结果:
I现在,朋友,斗地主结束了哦,嘻嘻
看到这里懂了吗?不懂再看一遍,或者是用图片上打叉的方法来实现一遍(这个挺重要的)。
还有就是外观模式还跟中介者模式相似,后面会说到。
然后想说的就是博主水平有限,有不足的地方还请说一下,谢谢,好的地方也可以聊一下。