论坛首页 Java企业应用论坛

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

浏览 5211 次
该帖已经被评为隐藏帖
作者 正文
   发表时间:2009-12-06   最后修改:2009-12-07

将策略的上下文的构造函数换用简单工厂模式的话就将业务对象封装起来了,客户端就只要了解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 来降低耦合

 

 

 

 

 

 

   发表时间:2009-12-06  
想表达什么......
0 请登录后投票
   发表时间:2009-12-06   最后修改:2009-12-06
陪她们依次去旅游(装饰模式)
女友多的好处 (简单工厂模式)

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

将策略的上下文的构造函数换用简单工厂模式的话就将业务对象封装起来了,客户端就只要了解Boy这个对象就ok了 ,不需要自己去声明接口DreamGir的业务对象l。
----------
但是代码里边也还是写了具体哪个业务对象~~
0 请登录后投票
   发表时间:2009-12-06  
mccxj 写道
陪她们依次去旅游(装饰模式)
女友多的好处 (简单工厂模式)

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

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

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

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

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

这两天确实挺无聊的哈哈~
0 请登录后投票
   发表时间:2009-12-07  
哎,一遍一遍的用现实的东西去模拟...

不知道说什么...

up...
0 请登录后投票
   发表时间:2009-12-07  
同感,没明白想说什么
0 请登录后投票
   发表时间:2009-12-07  
有点意思哦
0 请登录后投票
   发表时间:2009-12-07  
最好直接一张关系图拿出来,省得看得云里雾去
0 请登录后投票
   发表时间:2009-12-07  
同上上上,也不知道 要表达什么具体的问题~
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics