开发设计模式(三)策略模式(Strategy Pattern)
转自http://blog.sina.com.cn/s/blog_89d90b7c01017zrr.html
下面的环境是unity3d,用C#进行编码,当然有人会说这是在乱用模式,U3D不一定适合使用这些,其实不然,设计模式是前人总结的编程思想,语言只是工具,根据项目需求使用合理的设计方案就是最好设计模式的体现

// 首先定一个策略接口,这是诸葛亮老人家给赵云的三个锦囊妙计的接口 //
interface IStrategy
{
void Operate();
}
// 走后门,找乔国老帮忙,使孙权不能杀刘备 //
class BackDoor : IStrategy
{
public void Operate()
{
Debug.Log("找乔国老帮忙,让吴国太给孙权施加压力");
}
}
// 求吴国太开个绿灯 //
class GivenGreenLight : IStrategy
{
public void Operate()
{
Debug.Log("求吴国太开个绿灯,放行!");
}
}
// 孙夫人断后,挡住追兵 //
class BlockEnemy : IStrategy
{
public void Operate()
{
Debug.Log("孙夫人断后,挡住追兵");
}
}
// 好了,大家看看,三个妙计是有了,那需要有个地方放这些妙计呀,放锦囊呀: //
class Context
{
private IStrategy straegy;
public Context(IStrategy strategy)
{
this.straegy = strategy;
}
public void Operate()
{
this.straegy.Operate();
}
} public class Strategy : MonoBehaviour
{
private Context context;
void Start ()
{
Debug.Log("刚刚到吴国的时候拆第一个");
context = new Context(new BackDoor());
context.Operate(); Debug.Log("刘备乐不思蜀了,拆第二个了");
context = new Context(new GivenGreenLight());
context.Operate(); Debug.Log("孙权的小兵追了,咋办?拆第三个");
context = new Context(new BlockEnemy());
context.Operate();
}
}
开发设计模式(三)策略模式(Strategy Pattern)的更多相关文章
- 乐在其中设计模式(C#) - 策略模式(Strategy Pattern)
原文:乐在其中设计模式(C#) - 策略模式(Strategy Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 策略模式(Strategy Pattern) 作者:webabc ...
- 反馈法学习设计模式(一)——策略模式Strategy Pattern
简介(Introduction) 之前学习Java8实战时,遇到一个很好的策略模式示例.便想着借着这个示例结合反馈式的方法来,学习策略设计模式,也以便后面反复琢磨学习. 首先我们通过练习,逐步写出符合 ...
- 8.6 GOF设计模式四: 策略模式… Strategy Pattern
策略模式… Strategy Pattern 在POS系统中,有时需要实行价格优惠, 该如何处理? 对普通客户或新客户报全价 对老客户统一折扣5% 对大客户统一折扣10% 注:课件 ...
- 二十四种设计模式:策略模式(Strategy Pattern)
策略模式(Strategy Pattern) 介绍定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换.本模式使得算法的变化可独立于使用它的客户. 示例有一个Message实体类,对它的操作有 ...
- 设计模式原来如此-策略模式(Strategy Pattern)
策略模式中体现了两个非常基本的面向对象设计的原则:1.封装变化的概念.2.编程中使用接口,而不是对接口的实现. 策略模式的定义:定义一组算法,将每个算法都封装起来,并使它们之间可以互换.策略模式使这些 ...
- 【UE4 设计模式】策略模式 Strategy Pattern
概述 描述 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换.策略模式让算法的变化不会影响到使用算法的客户. 套路 Context(环境类) 负责使用算法策略,其中维持了一 ...
- 设计模式(一):“穿越火线”中的“策略模式”(Strategy Pattern)
在前段时间呢陆陆续续的更新了一系列关于重构的文章.在重构我们既有的代码时,往往会用到设计模式.在之前重构系列的博客中,我们在重构时用到了“工厂模式”.“策略模式”.“状态模式”等.当然在重构时,有的地 ...
- HeadFirst设计模式读书笔记(1)-策略模式(Strategy Pattern)
策略模式(Strategy Pattern): 定义了了算法簇,分别封装起来,让它们之间可以相互替换,此模式让算法的变化独立于使用算法的客户端. 第一个设计原则:找出应用中可能需要变化之处,把他们独立 ...
- 设计模式 - 策略模式(Strategy Pattern) 具体解释
策略模式(Strategy Pattern) 具体解释 本文地址: http://blog.csdn.net/caroline_wendy/article/details/26577879 本文版权全 ...
- JAVA设计模式之策略模式 - Strategy
在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改.这种类型的设计模式属于行为型模式. 在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 ...
随机推荐
- Java基础知识强化之网络编程笔记21:Android网络通信之 Android常用OAuth登录(获取令牌信息)
1. 首先我们去下载开发相关SDK(Android): 下载百度使用OAuth的SDK(Android),如下: 下载链接为:http://developer.baidu.com/wiki/index ...
- Android_listView_Listener
layout.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" x ...
- Time complexity analysis of algorithms
时间复杂性的计算一般而言,较小的问题所需要的运行时间通常要比较大的问题所需要的时间少.设一个程序P所占用的时间为T,则 T(P)=编译时间+运行时间. 编译时间与实例特征是无关的,且可假设一个编译过的 ...
- SpringMVC框架
一.SpringMVC工作流程图 DispatcherServlet:Spring提供的前端控制器,所有的请求都有经过它来统一分发.在DispatcherServlet将请求分发给Spring Con ...
- js观察者模式
观察者模式存在观察者和被观察者 被观察者的状态发生改变,通知观察者调用观察者的update方法,观察者的update方法对被观察者的状态进行检测,做出相应的操作 被观察者存在接口attach,deta ...
- oracle数据同步方案
数据同步方案:--用DBLINK 创建与所需同步表的链接------------------------------------------------------------------------ ...
- 处理不等高TableViewCell
课题一:如何计算Cell高度 方案一:直接法(面向对象) 想知道妹纸爱你有多深?直接去问妹纸本人吧! 嗯!Cell也是一样的,想知道cell到底有多高?直接问Cell本人就好了.直接法,就是把数据布局 ...
- OC5_构造方法与self指针
// // Dog.h // OC5_构造方法与self指针 // // Created by zhangxueming on 15/6/9. // Copyright (c) 2015年 zhang ...
- MySQL的记录长度
MySQL的记录长度 MySQL默认规定一条记录最大的长度是65535字节,所有的字段加在一起所占的字节数不能超过65535.但是MySQL中字段的长度有的时使用字节来规定int,有些字段类型是使用字 ...
- Famount game manufacuters
一.Valve「美国」 1.Valve「中文意:阀门」の来源 REFRE.Valve官网 REFER.a history of valve's opening logos REFER.theguyin ...