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

起床做饭(观察者模式)

阅读更多
//通知者
public class Boy {
	//状态
	private String state;
	//观察者列表
	public List<Girl> girls = new ArrayList<Girl>();
    
	//通知	
	public void notifyGirls(){
		
		for(Girl g : girls ){
			g.update();
		}
		
	}
	//增加
	public void attach(Girl g){
		girls.add(g);
	
	}
	//减少
	public void detach(Girl g){
		girls.remove(g);
	}
	
	
	public String getState() {
		return state;
	}
	public void setState(String state) {
		this.state = state;
	}
	
	public static void main(String[] args){
		Boy ysen = new Boy();
		Girl girlFriend = new Girl();
		girlFriend.setName("hyy");
		//下面两句 ,两个具体对象相互耦合了,违背了依赖倒转原则,应该让程序都依赖抽象,这里需要解耦
		//需要给Boy 和 Girl 各 添加一个基类,让它们依赖抽象
		girlFriend.setBoy(ysen);
		ysen.attach(girlFriend);
		
		ysen.setState("我回来了哦~~");
		ysen.notifyGirls();
	}
	
}

 

//观察者
public class Girl {
	
	private String name;
	private Boy boy;
	
	public void update(){
		System.out.println(boy.getState()+name+"起床做饭咯");
	}

	public Boy getBoy() {
		return boy;
	}
	public void setBoy(Boy boy) {
		this.boy = boy;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	

}

 

分享到:
评论
12 楼 java_doc 2009-12-13  
Solstice 写道
没错,一个简单的事件通知没必要用设计模式来装X。

mock1234 写道
编写《设计模式》那本书的时候,java世界的水平还很低。现在已经有很多现成的回调(或者说事件通知)的简单语法,所以设计模式的恶心代码最好不要模仿,应该使用你的编译器直接支持的清晰干净的标准事件delegate代码。

设计模式容易让人死读书、读死书。为了走形式而故作抽象地去增加繁琐冗余的层次,一堆极其雷人的模式专用名词术语掩盖了真相,结果也还是没有能够解除通讯中的耦合和理清通讯时序。我对设计模式的态度是:虽然他是许多人入门时的必修的八股文,建议各位工作时尽早看透它的本质然后把它扫进垃圾堆。


事件通知的底层实现还不是使用的设计模式。
11 楼 ora92 2009-12-13  
设计模式这么好,为什么只有23种,太少了吧,呵呵
10 楼 wangdgsc 2009-12-12  
设计模式是一种思想,不是一段代码,它只是告诉你遇到某一种问题时下使用一种大家都认可的方式去处理,因为那是被很多人实践出来的,模式不是纸上谈兵,是从实践中出来的,学模式学的是思想,不是学代码,所以,模式不会害人,就像一支军队,在有的人手上是正义之师,而在有的人手上,则成了叛军,呵呵
9 楼 netfish 2009-12-12  
软件都是需要包装的,包装的目的是为了能更好的和别人进行交流,当然,每个人有每个人的理解;其实设计模式是一种思想,楼主只是用一种表现形式表现出来了而已,不过不是很好的表现形式,一开始看lz的题目倒是很吸引人,为何不沿着这个深入下去呢
8 楼 夜之son 2009-12-11  
lz把自己的项目贴出来分析设计模式呗。让我们都学习学习
7 楼 Solstice 2009-12-11  
没错,一个简单的事件通知没必要用设计模式来装X。

mock1234 写道
编写《设计模式》那本书的时候,java世界的水平还很低。现在已经有很多现成的回调(或者说事件通知)的简单语法,所以设计模式的恶心代码最好不要模仿,应该使用你的编译器直接支持的清晰干净的标准事件delegate代码。

设计模式容易让人死读书、读死书。为了走形式而故作抽象地去增加繁琐冗余的层次,一堆极其雷人的模式专用名词术语掩盖了真相,结果也还是没有能够解除通讯中的耦合和理清通讯时序。我对设计模式的态度是:虽然他是许多人入门时的必修的八股文,建议各位工作时尽早看透它的本质然后把它扫进垃圾堆。

6 楼 aoliwen521 2009-12-11  
我认为设计模式,还是应当了解一下的。
编程的时候思路还是比较开阔,总能有一些解决问题的好想法。
5 楼 berlou 2009-12-11  
mock1234 写道
编写《设计模式》那本书的时候,java世界的水平还很低。现在已经有很多现成的回调(或者说事件通知)的简单语法,所以设计模式的恶心代码最好不要模仿,应该使用你的编译器直接支持的清晰干净的标准事件delegate代码。

说白了,假设一个小子要通知别人(不论是自己的女朋友还是别人)他回来了,那么这个事件不论是使用回调函数还是其它什么对象来实现,关键是,这个回调函数或者其它什么对象类的接口定义是这个小子主导的,这个小子不需要知道他自己的女朋友的接口,而女朋友则要知道他的接口,并且女朋友实例化一个回调函数或者通知对象在早上就安装到这个小子身上,这才能体现你的绿色的注释中所说的(抽象而非具体)原则。

设计模式容易让人死读书、读死书。为了走形式而故作抽象地去增加繁琐冗余的层次,一堆极其雷人的模式专用名词术语掩盖了真相,结果也还是没有能够解除通讯中的耦合和理清通讯时序。我对设计模式的态度是:虽然他是许多人入门时的必修的八股文,建议各位工作时尽早看透它的本质然后把它扫进垃圾堆。



被世界捧为经典的东西被你说成垃圾, 究竟是你垃圾还是世界都垃圾?
Java设计模式是在OO上扩展出来的, 是设计思想的总结和复用。 至于现在有人言必谈模式, 那只是误区, 不是设计模式本身的错误。 设计模式是设计的很基础的功底, 可以不必知道模式的名字, 但是不能不知道这里的思想。
好的设计和模式会让开发效率, 维护性扩展性得到很大的提升, 如果这个被你当作垃圾, 我只能说, 你是垃圾。
4 楼 mccxj 2009-12-11  
受不了接二连三的无聊模式~~投个新手
3 楼 ysen 2009-12-11  
虽然C#提供了回调事件delegate,但我们还是要了解本质的东西
2 楼 ysen 2009-12-11  
mock1234 写道
编写《设计模式》那本书的时候,java世界的水平还很低。现在已经有很多现成的回调(或者说事件通知)的简单语法,所以设计模式的恶心代码最好不要模仿,应该使用你的编译器直接支持的清晰干净的标准事件delegate代码。

说白了,假设一个小子要通知别人(不论是自己的女朋友还是别人)他回来了,那么这个事件不论是使用回调函数还是其它什么对象来实现,关键是,这个回调函数或者其它什么对象类的接口定义是这个小子主导的,这个小子不需要知道他自己的女朋友的接口,而女朋友则要知道他的接口,并且女朋友实例化一个回调函数或者通知对象在早上就安装到这个小子身上,这才能体现你的绿色的注释中所说的(抽象而非具体)原则。

设计模式容易让人死读书、读死书。为了走形式而故作抽象地去增加繁琐冗余的层次,一堆极其雷人的模式专用名词术语掩盖了真相,结果也还是没有能够解除通讯中的耦合和理清通讯时序。我对设计模式的态度是:虽然他是许多人入门时的必修的八股文,建议各位工作时尽早看透它的本质然后把它扫进垃圾堆。

还有这不是八股文,这是设计的基本思想
1 楼 ysen 2009-12-11  
mock1234 写道
编写《设计模式》那本书的时候,java世界的水平还很低。现在已经有很多现成的回调(或者说事件通知)的简单语法,所以设计模式的恶心代码最好不要模仿,应该使用你的编译器直接支持的清晰干净的标准事件delegate代码。

说白了,假设一个小子要通知别人(不论是自己的女朋友还是别人)他回来了,那么这个事件不论是使用回调函数还是其它什么对象来实现,关键是,这个回调函数或者其它什么对象类的接口定义是这个小子主导的,这个小子不需要知道他自己的女朋友的接口,而女朋友则要知道他的接口,并且女朋友实例化一个回调函数或者通知对象在早上就安装到这个小子身上,这才能体现你的绿色的注释中所说的(抽象而非具体)原则。

设计模式容易让人死读书、读死书。为了走形式而故作抽象地去增加繁琐冗余的层次,一堆极其雷人的模式专用名词术语掩盖了真相,结果也还是没有能够解除通讯中的耦合和理清通讯时序。我对设计模式的态度是:虽然他是许多人入门时的必修的八股文,建议各位工作时尽早看透它的本质然后把它扫进垃圾堆。

设计模式不管怎么说还是要了解并熟知才行,不然怎么走的高远了,相比ls应该比我更加烂熟于心

相关推荐

    起床战争专用材质包.zip

    起床战争是一种广受欢迎的Minecraft(我的世界)多人游戏模式,玩家在一座悬浮的小岛上开始,目标是收集资源,建造桥梁到达并摧毁敌方岛屿,最后保护自己的床不被破坏,因为床是重生点,一旦床被摧毁,玩家在死亡后...

    Bedwars[起床]_我的世界_起床战争_Bedwars_插件_

    服务器管理者只需将这个名为"Bedwars[起床].jar"的文件上传并安装到服务器上,就可以开启这个玩法,让玩家们尽情享受战斗与策略的乐趣。这个插件包含了游戏的规则设定、地图生成、物品平衡、团队分配、计分系统以及...

    我的世界仿hypxiel起床战争服务端

    本服务端仿照了知名的Hypixel服务器的起床战争模式,为玩家提供了一个类似的游戏体验。Hypixel是一个著名的《我的世界》服务器,以其多样化的游戏模式、精良的设计和稳定的性能闻名。 "我的世界仿hypxiel起床战争...

    自动切换飞行模式

    而在早晨7点起床时希望手机恢复正常功能,那么7点就可设定为关闭时间。这样,整个夜间你的手机都将保持在飞行模式,减少不必要的通知和打扰,保证良好的休息。 此外,这样的自动切换功能还可以用于其他场景,比如在...

    微信签到起床源码

    微信起床签到、带排名、积分,是微信营销的好工具

    中班健康:心理健康活动起床喽.doc

    同时,收集了幼儿园和家庭起床场景的实况录像,通过对比观察,让幼儿直观感受到自理的重要性。此外,为了活动的顺利导入和过渡,还准备了汽车音乐和玩具电话等辅助道具。幼儿已经学会的自编儿歌《起床》,也在活动...

    Android定时进入飞行模式

    例如,用户可以在睡前设置一个定时任务,然后在第二天早晨起床前,手机会自动切换到飞行模式,避免在夜间被打扰。 总结一下,学习Android定时任务和控制设备功能,如进入飞行模式,对于开发者来说是非常有价值的...

    起床战争服务端(来源:B站@73m9)

    若侵权请联系删除

    早上起床时用的小闹钟

    随着现代生活节奏的加快,一个准时且有效的闹钟成为了很多人早晨起床不可或缺的工具。易语言以其简单易学的特性,成为了许多编程初学者以及非专业程序员的首选,它降低了编程的门槛,使得编写小工具如闹钟程序变得...

    小闹钟,闹铃(每天叫你起床的好东西)

    程序小,功能强大,能主动叫你起床,还是用你自己最爱的音乐哦!!

    电脑闹钟(叫起床)

    电脑闹钟,可以用来叫起床,计时。提高办事效率,很好用。

    你妈喊你起床啦》阅读练习及答案.pdf

    通过一系列充满生活气息的细节描写,使读者能够深入到故事中去,仿佛自己就是故事的见证者。 故事的主人公刘标标,一个日常生活中常见的小男孩形象,他与母亲之间每天早晨的“起床战争”是文章的主要情节。刘标标的...

    【《清晨,小保姆起床做饭hehe》阅读答案】 朵拉小保姆.docx

    她开始观察女仆人的行为,但表面上她依旧如往常一般,尽职尽责地做着自己的工作。女仆人并没有意识到小保姆的计划,她拾起了楼梯上的钱,脸上露出了难以捉摸的神情。然而,小保姆并没有就此打住,她决定最后与女仆人...

    使命闹钟(起床特困户的救星).apk

    使命闹钟是风靡全球的闹钟应用APP Alarmy-Sleep if U Can的中文版。确保用户按时起床为主要使命,提供非起床不可的各种任务和铃声。主要功能:算数解铃、拍照解铃、甩甩解铃等。

    叫你起床的闹钟

    这是一个闹钟,通过选择音乐,设定时间来叫你起床

    起床签到源码

    getup(存储用户发送的起床信息) USER:用户openid NAME:用户昵称 LASTTIME:用户最后签到日期 HOUR:用户签到 时 MINUTE,用户签到 分 STATE:用户起床状态,签到后是geted NUM:名次 rank(存储最后签到时间和...

    幼儿园养生起床操.doc

    这套起床操以其独特的设计和实施效果,赢得了幼儿和教育工作者的喜爱。它巧妙地将音乐、瑜伽理念和儿童趣味元素相结合,为幼儿们创造了一个既健康又快乐的起床环境。 音乐是养生起床操中不可或缺的一部分。轻柔的...

    我的世界起床战争hypixel原厂地图3v3v3v3、4v4,加新老lobby大厅,节令地图现行地图

    在广袤的《我的世界》(Minecraft)世界中,玩家可以体验到各种各样的游戏模式,其中起床战争(Bedwars)以其独特的竞技性和策略性深受玩家们的喜爱。Hypixel作为《我的世界》中最受欢迎的服务器之一,其精心设计的...

    微信起床签到排名,抽奖代码php源码

    微信开发模式php源码,可以实现起床签到功能,抽奖功能

    幼儿园小班冬眠动物:该起床了(教学方案).pdf

    幼儿园小班冬眠动物:该起床了(教学方案).pdf

Global site tag (gtag.js) - Google Analytics