门面模式--案例解析

重新复习了一遍门面模式,又有来新的体会,古人云:读书百遍,其义自见,不无道理。所以,一定要多思!多动手,你才会成长。

来说说什么是门面模式:

大家肯定都知道医院(不知道的童鞋,我无能为力,老衲道行不高,表示救不了你,去找观世音菩萨吧,哦!),你去医院看病,一般得经过4个模块,即:挂号->看病->取药->收费.   大家肯定多这些模块很熟悉了,但是有的人有可能不熟悉,对把,这时候我们就需要一个接待员来负责接待他们,

清单1:挂号

public class 挂号 {
    public void operation1(){
    	System.out.println("挂号");
    }
}


清单2:看病

public class 看病 {
   public void operantion2(){
	   System.out.println("看病");
   }
}


清单3:取药
public class 取药 {
	public void operation3(){
		System.out.println("取药");
	}
}


清单4:收费
public class 收费 {
	public void operation4(){
	  System.out.println("收费");
	}
}


清单5:接待员

public class 接待员 {
	public void 接待() {
		System.out.println("您好,我是医院接待员:");
		挂号 t1 = new 挂号();
		t1.operation1();

		看病 t2 = new 看病();
		t2.operantion2();

		取药 t3 = new 取药();
		t3.operation3();

		收费 t4 = new 收费();
		t4.operation4();
	}
}


清单6:模拟场景

public class 医院 {
	public static void main(String[] args) {
		接待员 t=new 接待员();
		t.接待();
	}
}


清单7:输出

您好,我是医院接待员:
挂号
看病
取药
收费

可以看出,如果病人需要看病,只需要找接待员即可。

除了方便了病人看病。其实门面模式还有一个优点:省略病人不需要知道的方法或者模块,什么意思呢?大家先自己想3-5分钟。

解答:其实是这样的,病人去医院看病,比如得了一个皮肤病,那他应该到皮肤科去看。但是医院里面有很多科,比如:心脏外科,神经外科,泌尿外科,骨科,普通外科,麻醉科。病人可能第一次去医院,他哪里懂那么多!得了皮肤病直接奔心脏外科去了,这。。。。。(老衲道行不高,也救不了他!)

但是,对业务很熟悉的接待元那可就不一样了,他立马就可以知道去哪个科看病

好了,假如病人知道自己去皮肤科看病,皮肤科的医生帮他看完病,让让在门口等着化验结果,化验的过程需要安静,可这个病人可能很土,又不懂规矩,以为医生不理会他,直接冲进去找医生理论。医生表示很无奈!但是有了接待员,就不一样了,他会引导病人!医生在化验这个过程,接待元会告诉他不需要知道!看病这个模块内部的方法细节就对病人透明!

代码清单:挂号

public class 挂号 {
    public void operation1(){
    	System.out.println("挂号");
    }
}


代码清单:看病(代码有变动)

public class 看病 {
   public void operantion2(){
	   System.out.println("看病");
   }
   public void ohter_operation(){
	   System.out.println("医生正在进行化验");
   }
}


代码清单:取药

public class 取药 {
	public void operation3(){
		System.out.println("取药");
	}
}


代码清单:收费
public class 收费 {
	public void operation4(){
	  System.out.println("收费");
	}
}

代码清单:接待员

public class 接待员 {
	public void 接待() {
		System.out.println("您好,我是医院接待员:");
		挂号 t1 = new 挂号();
		t1.operation1();

		看病 t2 = new 看病();
		t2.operantion2();

		取药 t3 = new 取药();
		t3.operation3();

		收费 t4 = new 收费();
		t4.operation4();
	}
}


代码清单:模拟场景
public class 医院 {
	public static void main(String[] args) {
		接待员 t=new 接待员();
		t.接待();
	}
}

我们可以看出,有些是模块内部的方法(看病中的other_operation(),不需要被外部的调用者知道),使用门面模式,就能很好的做到这一点!

以上是我一字字敲出来的,转帖请声明出处,谢谢!




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值