`
ysen
  • 浏览: 123495 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

朋友做客(外观模式或者门面模式)

阅读更多

老鸟飞过

 

 

package facade;
/**
 * 
 * 在实际的开发过程中,往往需要将不同的两个层分离,
 * 比如mvc 三层架构
 * 业务层与表现层、持久层与业务层之间建立外观Facade,
 * 这样为新的系统提供简单的接口。
 */
 //facade类 组合了 三个子系统(每个girl是独立的系统)
public class Boy {
	
	private BeautifulGirl beautifulGirl;
	private LivelyGirl  livelyGirl;
	private LooksMediocreGirl looksMediocreGirl;
	
	Boy(){
		beautifulGirl = new BeautifulGirl();
		livelyGirl =new LivelyGirl();
		looksMediocreGirl = new LooksMediocreGirl();
	}
	
	//我的朋友并不知道我有几个女友,因为女友是我私有的,但是给我朋友做饭的不是我,却是我的女友们。
	//我的朋友到我家做客,他不了解我们家的情况,如果让我的朋友直接命令我的女友做家务,也许他会忙的忘记和我讲正事了(违背了单一职责)
	//我朋友 1————1 我(facade) 1————n girls
	//如果没有了我(facade),那么就变成了 我朋友 1————n girls 
	//如果我朋友是待开发的新系统, girls是老系统(之前实现了的)
	//新系统需要用到老的系统提供服务,可是老系统很复杂,
	//开发新系统的人可能不了解老系统是怎么实现的,
	//那么facade 的出现就是提供给新系统 老系统的接口
	public void  dinner_for_friend(Friend friend){
		
		// if...else...可以考虑状态模式重构
		if(  friend.getAges()<30){
			this.methodA();
		}else{
			this.methodB();
		}
		 
		
	}
	
	public void methodA(){
		
		beautifulGirl.do_it();
		livelyGirl.do_something();
		looksMediocreGirl.i_can_do();
		
	}
	public void methodB(){
	
		looksMediocreGirl.i_can_do();
		livelyGirl.do_something();
		beautifulGirl.do_it();
	}

	
}

 

public class BeautifulGirl {
	
	public void do_it(){
		
		System.out.println("来杯咖啡");
	}

}

 

public class LivelyGirl {
	
	
	public void do_something(){
		
		System.out.println("准备午餐");
	}

}

 

public class LooksMediocreGirl {

	public void i_can_do(){
		
		System.out.println("准备点心");
		
	}
	
}

 

 

public class Friend {
	
	int ages;

	
	public int getAges() {
		return ages;
	}

	public void setAges(int ages) {
		this.ages = ages;
	}
	
	

}

 

分享到:
评论
18 楼 ababw1w1 2010-10-19  
希望楼主多多指教,我刚刚才学设计模式
17 楼 Ashfrog 2010-09-03  
例子很浅显易懂,也很有趣···
但我还是没有理解到这种模式的妙处···
是不是可以这样理解···
由Boy,将Girl的方法组合封装,Friend就可以通过Boy的methodA,B(封装了Girl的方法),来实现功能,而不必直接调用Girl的方法···
16 楼 jeff.key 2010-08-31  
[quote=&quot;ysen&quot;]
老鸟飞过

一直觉得facade有点多余,
主要是处理一些legacy系统接口过于复杂需要重新包装的问题。
如是你的系统从一开始就facade,那就有点奇怪了。

facade的一个可以参考的应该我觉得是tomcat的代码,
忘了是哪一段了,具体grep一下facade就知道了。
15 楼 wa20463165 2010-08-26  
我感觉就像是工厂模式的扩展,以前咱们习惯一个工厂生产一种产品,现在这个工厂生产了多种不同用途的产品。
呵呵,也可能是我没看懂哈!
14 楼 ideal46 2010-08-18  
如果是为了纯粹的将facade模式,很好,但是这样的设计不好,不用接口的设计模式都是狗屎。
13 楼 lovelh 2010-08-11  
简单易懂,不错
12 楼 youanyyou 2010-05-27  

学习了。。。简单易懂
11 楼 zhglhy 2010-05-25  
很好,简单易懂!
10 楼 抢街饭 2010-05-18  
女友多 真是一件好事
9 楼 ahutzh 2010-05-17  
最近正在看设计模式有关的书籍,向楼主学习了!
8 楼 nenyalanye_1 2010-05-17  
methodA 和methodB 应该改为 私有访问更好吧
7 楼 fucktianya 2010-05-14  
讲的很一般,没看出哪儿好。
之所以这么说,是因为我没看懂,哈哈!
6 楼 nenyalanye_1 2010-05-12  
讲的不错 很好理解
5 楼 chendw_hz 2009-12-21  
我觉得楼主应该在门面类型对象用容器来容纳其他的子系统更好~!如果子对象如果特别多
估计提供给客户端的门面对象非常庞大 维护不方便,浅见。。
4 楼 LK.Bing 2009-12-11  
很好,简单易懂.
3 楼 java苹果+番茄 2009-12-10  
<div class="quote_title">ysen 写道</div>
<div class="quote_div">
<p>老鸟飞过</p>
<p> </p>
<p> </p>
<pre name="code" class="java">package facade;
/**
*
* 在实际的开发过程中,往往需要将不同的两个层分离,
* 比如mvc 三层架构
* 业务层与表现层、持久层与业务层之间建立外观Facade,
* 这样为新的系统提供简单的接口。
*/
//facade类 组合了 三个子系统(每个girl是独立的系统)
public class Boy {

private BeautifulGirl beautifulGirl;
private LivelyGirl  livelyGirl;
private LooksMediocreGirl looksMediocreGirl;

Boy(){
beautifulGirl = new BeautifulGirl();
livelyGirl =new LivelyGirl();
looksMediocreGirl = new LooksMediocreGirl();
}

//我的朋友并不知道我有几个女友,因为女友是我私有的,但是给我朋友做饭的不是我,却是我的女友们。
//我的朋友到我家做客,他不了解我们家的情况,如果让我的朋友直接命令我的女友做家务,也许他会忙的忘记和我讲正事了(违背了单一职责)
//我朋友 1————1 我(facade) 1————n girls
//如果没有了我(facade),那么就变成了 我朋友 1————n girls
//如果我朋友是待开发的新系统, girls是老系统(之前实现了的)
//新系统需要用到老的系统提供服务,可是老系统很复杂,
//开发新系统的人可能不了解老系统是怎么实现的,
//那么facade 的出现就是提供给新系统 老系统的接口
public void  dinner_for_friend(Friend friend){

// if...else...可以考虑状态模式重构
if(  friend.getAges()&lt;30){
this.methodA();
}else{
this.methodB();
}


}

public void methodA(){

beautifulGirl.do_it();
livelyGirl.do_something();
looksMediocreGirl.i_can_do();

}
public void methodB(){

looksMediocreGirl.i_can_do();
livelyGirl.do_something();
beautifulGirl.do_it();
}


}</pre>
<p> </p>
<pre name="code" class="java">public class BeautifulGirl {

public void do_it(){

System.out.println("来杯咖啡");
}

}
</pre>
<p> </p>
<pre name="code" class="java">public class LivelyGirl {


public void do_something(){

System.out.println("准备午餐");
}

}
</pre>
<p> </p>
<pre name="code" class="java">public class LooksMediocreGirl {

public void i_can_do(){

System.out.println("准备点心");

}

}
</pre>
<p> </p>
<p> </p>
<pre name="code" class="java">public class Friend {

int ages;


public int getAges() {
return ages;
}

public void setAges(int ages) {
this.ages = ages;
}



}
</pre>
<p> </p>
</div>
<p> </p>
2 楼 ysen 2009-12-10  
wujiazhao88 写道
楼主对设计模式的理解应用到这些有趣的例子上,真是不错

最近还是比较闲的,呵呵
1 楼 wujiazhao88 2009-12-10  
楼主对设计模式的理解应用到这些有趣的例子上,真是不错

相关推荐

    地道英语:去朋友家做客如何打招呼_10.Html.pdf

    【地道英语:去朋友家做客如何打招呼】 在IT领域,虽然技术交流通常是主题,但社交礼仪同样重要,尤其是在跨文化沟通中。这篇内容聚焦于英语中的家庭访问礼仪,特别是如何用地道的英语向朋友家中的其他人打招呼。这...

    幼儿园中班社会详案《欢迎来做客》润新教育.txt

    幼儿园中班社会详案《欢迎来做客》润新教育.txt

    2021高三作文“100年后青年邀请100年前青年做客”原题及优秀范文.pdf

    2021高三作文“100年后青年邀请100年前青年做客”原题及优秀范文.pdf

    免费短信软件zozoc 2.0中文版

    如果您需要给非做做客的朋友发送短消息,您能够在每条短信上立刻节省20% ~ 50%的短信费用(具体取决于您的运营商和套餐),具体资费将在稍后出台. 想要更快捷和彻底免费的短信? 那就快要请你的朋友们都来加入做做客...

    在叔叔家做客作文.doc

    标题中的“在叔叔家做客作文.doc”表明这是一篇以个人视角描绘去叔叔家做客体验的文章,属于文学创作的范畴,特别是作文或故事类的范文。描述中提到的同样内容暗示这是一个关于家庭访问的故事,发生在暑假期间,地点...

    语言游戏《到春姑娘家做客》教案.docx

    【语言游戏《到春姑娘家做客》教案】 这是一份针对幼儿的教育教案,旨在通过语言游戏的方式,帮助孩子们提升语言能力,培养良好的社交礼仪,并加深对春天的认知。游戏的核心是模仿小动物去春姑娘家做客的情景,通过...

    小班科学 到小动物家做客.doc

    小班科学 到小动物家做客.doc

    中望做客央视力促CAD正版化.pdf

    中望做客央视力促CAD正版化.pdf

    幼儿园教案2021-小班美术综合活动《小兔做客》.doc

    在实施过程中,教师的角色不是简单的指挥者或者裁判,而是孩子们活动中的引导者、合作者和鼓励者。教师需要观察每个孩子的表现,了解他们在活动中的需求和困难,然后给予个性化的指导和帮助。这样的方式不仅能够满足...

    待客做客礼仪(小学礼仪教案).doc

    待客做客礼仪(小学礼仪教案).doc

    小班美术综合活动《小兔做客》.doc

    而《小兔做客》这一美术综合活动便是针对幼儿年龄特点和认知发展水平而精心设计的,通过富有创意的情境化教学,将美术、语言、音乐、数学和体育等多个学科领域知识巧妙融合,旨在激发幼儿的学习兴趣,促进他们在游戏...

    《大象来做客》童话故事.docx

    1. **团队协作** - 小鸟提出了一个创新的想法,即建造一座大房子以邀请大象做客。这个故事展示了团队合作的力量,每个小动物都有自己的角色,共同完成了目标。在IT行业中,团队协作同样至关重要,无论是开发项目还是...

    到小动物家做客.doc

    【到小动物家做客】就是这样一个富有创意和教育意义的活动设计,它通过模拟到小动物家做客的情境,让孩子们在轻松愉快的氛围中学习饮食知识与餐桌礼仪,同时促进了幼儿对食物多样性的认知,培养了正确的进餐习惯,...

    小班语言到鸡婆婆家做客教案.doc

    小班语言到鸡婆婆家做客教案 小班语言到鸡婆婆家做客教案是优秀的小班语言教案知识,供老师家长们参考学习。该教案旨在提高幼儿的语言能力、礼貌用语和进餐的正确姿势。 一、目标: 1. 在游戏情景中愉快地练习...

    房地产培训 - 房企做客研的三个层次.pdf

    房地产企业在进行客户研究(客研)的过程中,其研究工作主要分为三个层次:顶层、中层和底层。每个层次都对应着不同的研究方法和目标,它们共同构成了房企在产品研发、市场定位、投资决策等方面的重要基础。...

    商务礼品与做客礼品的区别 管理资料.doc

    商务礼品与做客礼品的区别 管理资料.doc

    小班语言优秀教案《做客》润新教育.txt

    小班语言优秀教案《做客》润新教育.txt

    到鸡婆婆家做客.doc

    本文档“到鸡婆婆家做客”就是一个典型的设计案例,通过组织一次模拟活动,让幼儿们在游戏中学习文明进餐的礼仪和规则,从而达到培养幼儿文明进餐习惯和技能的教育目的。 在“到鸡婆婆家做客”这个活动中,将文明...

    小鸡做客(语言).doc

    这其中,“小鸡做客(语言)”活动以其生动有趣的方式,让小班幼儿在参与游戏的过程中,既提升了语言表达能力,又增强了对方位概念的理解,同时学会了社交规则。本文将从活动的设计理念、目标、准备、过程以及延伸...

    《到鸡婆婆家做客》(小班).doc

    《到鸡婆婆家做客》(小班).doc

Global site tag (gtag.js) - Google Analytics