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

老公爱吃的菜(策略模式)

阅读更多

将策略的上下文的构造函数换用简单工厂模式的话就将业务对象封装起来了,客户端就只要了解Boy这个对象就ok了 ,不需要自己去声明接口DreamGir的业务对象l。

 

//上下文
public class Boy {

	private DreamGirl girl;

	Boy(DreamGirl girl) {

		this.girl = girl;
	}

	public void want_to_eat() {

		girl.prepare_food();

	}

	public DreamGirl getGirl() {
		return girl;
	}

	public void setGirl(DreamGirl girl) {
		this.girl = girl;
	}

	public static void main(String[]args){
		DreamGirl 韩媛媛 = new BeautifulGirl();
		Boy ysen = new Boy(韩媛媛);
		ysen.want_to_eat();
		
		
	}
}

 

 

//男孩心中抽象的梦中女孩
public abstract class DreamGirl {
	//准备食物方法
	public abstract void prepare_food();

}

 

public class LivelyGirl extends DreamGirl{

 
	public void prepare_food() {
		
		System.out.println("老公喜欢我做的酸菜鱼");
		
	}

}

 

//相貌平平的女孩 呵呵
public class LooksMediocreGirl extends DreamGirl{

	 
	public void prepare_food() {
	 
		System.out.println("老公喜欢我做的糖醋里脊");
	}

}

 

//一位漂亮的女孩呵呵
public class BeautifulGirl extends DreamGirl {

 
	public void prepare_food() {
		
		System.out.println("老公喜欢我做的土豆炖肉嘿嘿");
	}

}

 

//一位理智的女孩 呵呵
public class SensibleGirl extends DreamGirl{

 
	public void prepare_food() {
	 
		System.out.println("老公喜欢我做的鱼香肉丝");
	}
	
	

}

 

 

老公喜欢我做的土豆炖肉嘿嘿

 

介于部分朋友觉得内容不太露骨,(老鸟略过) 感觉不出策略思想到底是用来解决样的什么问题。

首先策略思想它强调的是用组合来封装原有的动态行为方法。

变化的行为用组合 has a

不变的行为用继承 is  a

 

 

下面我来改下Boy类

 

//上下文
public class Boy {

	private DreamGirl girl;

	Boy(DreamGirl girl) {

		this.girl = girl;
	}

	public void want_to_eat() {

		girl.prepare_food();

	}//参照上面的Boy类这个行为方法很明显是变化的,所以我们需要抽象这个方法,就是通过美女接口以及具体的业务实现类(不同的girl)
             public void prepare_food() {
	 
		//System.out.println("老公喜欢我做的鱼香肉丝");
	}

	public DreamGirl getGirl() {
		return girl;
	}

	public void setGirl(DreamGirl girl) {
		this.girl = girl;
	}

	 
}

  很明显我的 prepare_food() 行为是变化的,我这里用的只能是组合,声明接口DreamGirl是为了可以实现不同的业务类型(不同的女孩),现在的情况是DreamGirl依赖于Boy 但是却实现了业务的变化,我们这里完全可以通过spring 来降低耦合

 

 

 

 

 

 

分享到:
评论
15 楼 dopic 2009-12-07  
什么跟什么
14 楼 tomorrow009 2009-12-07  
LZ不过就是想用比较活泼的方式描述一下策略模式而已。我觉得说的挺好,浅显易懂。
13 楼 jashawn 2009-12-07  
女人们都喜欢自己的老公在众人面前晒自己,
ysen在je上晒“韩媛媛”,引入“命令模式”处理此“晒”的事件,
于是韩媛媛笑了,众围观jrs或纷纷表示不解,或纷纷表示无聊,整个事件皆为“观察者模式”所驱动。
当韩媛媛心情变为happy时,引入“状态模式”处理其心情,
出于封装原因,其内部实现围观众人不得而知,盼ysen示之。
12 楼 hanamichi10 2009-12-07  
dieslrae 写道
想表达什么......


公喜欢我做的土豆炖肉嘿嘿...

楼主喜欢漂亮的女孩子呗...
11 楼 夜之son 2009-12-07  
抽象,咱来点更抽象的吧。
10 楼 flyliying 2009-12-07  
建议楼主加上简单的说明
9 楼 topcode 2009-12-07  
同上上上,也不知道 要表达什么具体的问题~
8 楼 咖啡猪猪 2009-12-07  
最好直接一张关系图拿出来,省得看得云里雾去
7 楼 rodneytt 2009-12-07  
有点意思哦
6 楼 egooooo 2009-12-07  
同感,没明白想说什么
5 楼 mwmw 2009-12-07  
哎,一遍一遍的用现实的东西去模拟...

不知道说什么...

up...
4 楼 ysen 2009-12-06  
mccxj 写道
陪她们依次去旅游(装饰模式)
女友多的好处 (简单工厂模式)

还有这个。。。都挺无聊的帖子,不发也罢~~
ps:我发现我也挺无聊的,去看这样的帖子~~

将策略的上下文的构造函数换用简单工厂模式的话就将业务对象封装起来了,客户端就只要了解Boy这个对象就ok了 ,不需要自己去声明接口DreamGir的业务对象l。
----------
但是代码里边也还是写了具体哪个业务对象~~

这两天确实挺无聊的哈哈~
3 楼 ysen 2009-12-06  
mccxj 写道
陪她们依次去旅游(装饰模式)
女友多的好处 (简单工厂模式)

还有这个。。。都挺无聊的帖子,不发也罢~~
ps:我发现我也挺无聊的,去看这样的帖子~~

将策略的上下文的构造函数换用简单工厂模式的话就将业务对象封装起来了,客户端就只要了解Boy这个对象就ok了 ,不需要自己去声明接口DreamGir的业务对象l。
----------
但是代码里边也还是写了具体哪个业务对象~~

策略和简单工厂模式配合下:
将策略的构造函数 换成简单工厂模式 就不需要客户端自己写业务对象了
2 楼 mccxj 2009-12-06  
陪她们依次去旅游(装饰模式)
女友多的好处 (简单工厂模式)

还有这个。。。都挺无聊的帖子,不发也罢~~
ps:我发现我也挺无聊的,去看这样的帖子~~

将策略的上下文的构造函数换用简单工厂模式的话就将业务对象封装起来了,客户端就只要了解Boy这个对象就ok了 ,不需要自己去声明接口DreamGir的业务对象l。
----------
但是代码里边也还是写了具体哪个业务对象~~
1 楼 dieslrae 2009-12-06  
想表达什么......

相关推荐

    23种JAVA设计模式和15种J2EE设计模式

    创建型模式关注的是对象的创建方式,旨在提供一种机制,让用户可以从不同的创建策略中选择最适合当前情况的一种。这些模式有助于隐藏对象创建的具体细节,并为对象创建提供了一个统一的接口。 **1.1.1 Abstract ...

    C#23种设计模式_示例源代码及PDF

    1、 FACTORY —追 MM 少不了请吃饭了, 麦当劳的鸡翅和肯德基的鸡翅都是 MM 爱吃的东西, 虽然口味有所不同, 但不管你带 MM 去麦当劳或肯德基, 只管向服务员说“来四个鸡翅”就行 了。麦当劳和肯德基就是生产鸡翅...

    java二十三种设计模式

    19. 策略模式(Strategy):定义一系列的算法,把它们一个个封装起来,并使它们可相互替换。 20. 模板方法模式(Template Method):定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。 21. 访问者模式...

    设计模式个人整理设计模式个人整理

    如梦中的情景,家中的“老公”是一个单例,任何时候提到“老公”都指向同一人。单例模式常用于控制资源的共享,如数据库连接或线程池。 6. **结构型模式**: 结构型模式关注如何组合现有组件来创建更复杂的结构。 ...

    谈Java的23种设计模式

    如装饰器模式(Decorator)、观察者模式(Observer)、代理模式(Proxy)、桥接模式(Bridge)、责任链模式(Chain of ...策略模式(Strategy)、模板方法模式(Template Method)以及访问者模式(Visitor)...

    设计模式与泡MM——设计模式入门教程

    **例子**:如果有一天你拥有了六个老婆,她们都称呼你为“老公”,那么你就是这个家庭中的唯一老公,即单例。这种方式确保了在整个系统中只有一个实例存在。 #### 二、结构型模式 ##### 6、ADAPTER(适配器模式) ...

    Java23种设计模式

    以上只是23种设计模式中的一部分,其他还包括代理模式、装饰模式、观察者模式、迭代器模式、命令模式、责任链模式、备忘录模式、状态模式、策略模式、模板方法模式、访问者模式、享元模式、组合模式等。每种模式都有...

    二十三种设计模式通俗理解

    比如,请女朋友吃汉堡时,您可以直接告诉她“我要一个汉堡”,至于是要牛肉汉堡还是鸡肉汉堡,则由女朋友根据自己的口味选择。这里,您扮演的是抽象工厂的角色,而具体的工厂(如麦当劳或肯德基)则负责根据客户的...

    常见设计模式举例说明

    例如,我有 6 个漂亮的老婆,她们的老公都是我,我就是我们家里的老公 Singleton。 结构型模式 结构型模式是处理类和对象之间的关系的设计模式。它可以使系统更加灵活和可扩展。 6. ADAPTER 模式 ADAPTER 模式是...

    趣味JAVA23种设计模式

    如同请女朋友去麦当劳吃汉堡,具体要什么口味的汉堡,可以让女朋友自己选择,工厂方法模式提供了这种灵活性。这种模式的优势在于支持开闭原则,易于扩展,但引入了更多的类。 #### 原型模式(Prototype) 原型模式...

    Java 24种设计模式

    在例子中提到的拥有六个老婆的老公就是单例模式的一个形象比喻。无论哪个老婆呼唤“老公”,其实都是指向同一个实体,即确保了“老公”的唯一性。 #### 二、结构型模式 结构型模式主要关注如何组合类或对象来获得...

    设计模式与现实生活,形象,生动

    这个模式类似于请MM吃汉堡的场景。当你带着MM去麦当劳或者肯德基时,并不需要记得每个人的具体口味,而是可以让她们直接告诉服务员自己的喜好。这种模式下,核心的工厂类定义了一个接口,但将具体的创建过程委托给...

    23种设计模式的独到见解

    最后是行为型模式,这部分将在后续的讨论中涵盖,包括代理模式、责任链模式、命令模式、迭代器模式、观察者模式、状态模式、策略模式、模板方法模式和访问者模式。这些模式分别解决了对象行为的分配、事件传递、命令...

    编程的23种设计模式(mm设计模式,形象易懂)

    5. **单例模式**:就像家庭中的唯一老公,单例模式确保一个类只有一个实例存在,并且全局访问点总是返回相同的实例。它常用于资源管理或者需要全局共享的场景。 6. **适配器模式**:就像朋友kent帮助你与说粤语的...

    java 的23种设计模式

    其他的设计模式包括代理模式、享元模式、外观模式、代理模式、责任链模式、命令模式、迭代器模式、备忘录模式、状态模式、策略模式、模板方法模式以及访问者模式等,它们各自都有独特的应用场景和价值。掌握这些模式...

    老公老公我爱你PPT动画下载.rar

    标题中的“老公老公我爱你PPT动画下载.rar”表明这是一个包含有与爱情主题相关的PPT演示文稿和可能的配套资源的压缩文件。该文件可能是为了庆祝情人节或是表达浪漫情感而设计的,适合用来制作个人化的礼物或者在特殊...

    永远不变的爱——给情人或老公的ppt模板.rar

    标题中的“永远不变的爱——给情人或老公的ppt模板.rar”表明这是一个专门设计用于表达爱情情感的PowerPoint模板文件,被压缩成RAR格式以便于下载和存储。RAR是一种流行的压缩格式,它能够将多个文件合并成一个单一...

    关于23种设计模式的有趣见解

    5. **单例模式**:确保一个类只有一个实例,如梦中的六个老婆共享同一个老公。单例模式常用于控制资源访问,如线程池、数据库连接等,但过度使用可能导致设计过于僵化。 6. **适配器模式**:适配器模式解决了接口不...

    追MM与23种设计模式

    拥有多位老婆却都认同一人作为老公的例子虽然虚构,但生动诠释了单例模式的核心理念:确保一个类只有一个实例,并且该实例可以全局访问。在软件开发中,单例模式常用于控制资源的访问,例如数据库连接或线程池等,...

Global site tag (gtag.js) - Google Analytics