黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

為什么策略模式叫做策略模式

系統(tǒng) 2138 0

? 我想我瘋了。。。跑到網(wǎng)吧來(lái)寫代碼。。。。。

? 昨天看了《Head First 設(shè)計(jì)模式》剛看了第一章,感覺(jué)收獲很大,至少我知道什么是策略模式。。。但是到昨天看完之后我還是不了解為什么叫做策略模式。。。后來(lái)在廁所里想了下。。。。。。。今天就跑到網(wǎng)吧把我的想法寫出來(lái)了。。。放清明,電腦還在學(xué)校(悲劇的臺(tái)式機(jī))

戰(zhàn)將類--小說(shuō)《修真世界》中戰(zhàn)將就使用策略的高手,將使用的策略的具體實(shí)現(xiàn)交給Strategy類去實(shí)現(xiàn),就把變化的部分的分離開了。

?

    package com.wjh.celue;

public class Fights {
	//策略實(shí)例變量
   	Strategy myStrategy;
	public Fights(Strategy strategy)
	{
		//初始化
		this.myStrategy = strategy;
	}
	//設(shè)置策略
	public void SetStrategy(Strategy strategy)
	{
		this.myStrategy = strategy;
	}
	//使用策略
	public void useStrategy()
	{
		myStrategy.use();
	}

}
  

?策略類---策略的總父類,其子類必須實(shí)現(xiàn)其use方法,所有的具有相互替換性

    package com.wjh.celue;
/**
 * 策略的抽象類,策略的子類必須實(shí)現(xiàn)use方法
 * @author Administrator
 *
 */
public abstract class Strategy {
	public abstract void use();

}

  

?空城計(jì)--策略的子類,實(shí)現(xiàn)了use方法.

    package com.wjh.celue;

import static com.wjh.print.MyPrint.*;
//繼承策略類
public class KongChengJi extends Strategy{

	@Override
	public void use() {
		// TODO Auto-generated method stub
		println("使用空城記");	
	}

}
  

?

美人計(jì)--策略的子類,同樣實(shí)現(xiàn)了use方法.

    package com.wjh.celue;

import static com.wjh.print.MyPrint.*;
/**
 * 策略類的子類,實(shí)現(xiàn)use方法
 * @author Administrator
 *
 */
public class MeiRenJi extends Strategy{

	@Override
	public void use() {
		// TODO Auto-generated method stub
		println("使用美人計(jì)");
	}

}
  

?主類---創(chuàng)建戰(zhàn)將類實(shí)例小娘(在<<修真世界>>中,小娘是一個(gè)戰(zhàn)將),他會(huì)使用各種策略.

創(chuàng)建各種策略對(duì)象,并讓小娘使用.

因?yàn)樗麄兌祭^承于策略類,在多態(tài)的神奇效果下,他們都調(diào)用他們本身的use方法.

    package com.wjh.main;

import com.wjh.celue.Fights;
import com.wjh.celue.KongChengJi;
import com.wjh.celue.MeiRenJi;

public class MainUi {
	public static void main(String[] args)
	{
		//創(chuàng)建戰(zhàn)將類對(duì)象小娘
		Fights xiaoLiang = new Fights(new KongChengJi());
		//小娘使用策略
		xiaoLiang.useStrategy();
		//小娘換策略
		xiaoLiang.SetStrategy(new MeiRenJi());
		//小娘使用策略
		xiaoLiang.useStrategy();
	}

}
  

?總結(jié)...雖然小娘并不會(huì)使用空城計(jì)和美人計(jì),但是通過(guò)這個(gè)例子,我更了解為什么策略模式叫做策略模式...

?

策略模式的定義:策略模式定義了一系列的算法,并將每一個(gè)算法封裝起來(lái),而且使它們還可以相互替換。策略模式讓算法獨(dú)立于使用它的客戶而獨(dú)立變化(來(lái)自百度百科)

?

但我自己覺(jué)得那些算法就是一個(gè)個(gè)的策略(或許他們本來(lái)就是一樣的),用于解決各種問(wèn)題.

而因?yàn)橛?jì)劃永遠(yuǎn)趕不上變化,所以我們把變化拿出來(lái),整成一個(gè)方法集(例如:36計(jì)).在實(shí)施(打仗)的時(shí)候,

我們根據(jù)需要去使用相應(yīng)的方法(策略),這就達(dá)到了一種以不變應(yīng)萬(wàn)變的效果...

?

?

備注:以上內(nèi)容都是我自己在學(xué)習(xí)過(guò)程中的想法,或許是錯(cuò)的,請(qǐng)大家告訴我......謝謝...

為什么策略模式叫做策略模式


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論