游戏相关设计模式的总结(二)

9 篇文章 0 订阅
4 篇文章 0 订阅

桥接模式

“将’抽象‘与‘实现’分离,使两者可以独立地变化。”

“想要实现一个‘抽象’类的一个功能,除了通过继承实现,还可以通过声明一个桥接成员,通过调用该成员的实现的功能来实现自己的功能。即桥接别人的功能。”

“描述了两个类群组之间交叉组合汇编,存在一个整体有两个连接的灵活可变部分的状态。”

成员:

Abstraction(抽象体接口)、Implementor(实现体接口)、具体Abstraction(抽象体)、具体Implementor(实现体)

使用方法概述:

Abstraction抽象体接口拥有Implementor实现体接口的引用。由抽象体子类决定实现体的子类,并决定在方法中如何调用实现体的方法。外部使用时就只是确定抽象体子类并调用相关方法。

示例:

public abstract class Abstraction{
    //实现体
    Implementor impl; 
    
    //调用实现体方法
    public void Operation(){
        impl.OperationImpl();
    }
}
​
public abstract class Implementor{ 
    //可被调用的实现体方法
    public void OperationImpl(){
        
    } 
}

应用场景和优点:

单一职责、开闭、依赖倒置:分离了’抽象‘与‘实现’

1、降低维护难度,方便修改和增加抽象体能用的实现方法。

2、实现了两个类群组低耦合的连接合作,彼此扩展不影响对方。

 

缺点:

 

应用:角色和载具,法术

 

策略模式

“定义一组算法,并封装每个算法,让它们彼此可以交换使用,客户端可以独立地使用它们。”

“设置算法类群组,将多变的方法分离出来专门封装成一个类由客户端调用”

成员:

Context(策略客户端)、Strategy(策略接口类)、具体Strategy(提供“策略客户端”可以使用的方法)

使用方法概述:

Context策略客户端拥有Strategy策略接口类的引用。在不同的情况下,设置不同的具体Strategy类,来调用它的方法。

示例:

public abstract class Context{
    //策略接口
    Strategy m_strategy; 
    
    public void SetStrategy(Strategy strategy){
        m_strategy = strategy;
    }
    
    //调用策略类的算法
    public void Operation(){
        m_strategy.Algorithm();
    }
}

应用场景和优点:

单一职责、开闭、依赖倒置:细分粒度,分离了方法的实现

1、降低维护难度,方便修改和增加能用的实现方法。

2、使原来的类不再依赖具体的算法,而能够改变算法。

 

缺点:

应用:角色属性计算,登陆策略

 

 

模板方法模式

“在一个方法中定义算法流程,其中某些步骤由子类实现。从而让子类在不改变原有算法流程的情况下,还能重新定义其中的步骤。”

“将可能重复的流程抽象出来,提升到父类中作为模板方法,由子类决定步骤的实现。”

成员:

抽象Class(算法定义类)、具体Class(算法步骤的实现类)

使用方法概述:

在算法定义类中声明模板方法和各个算法步骤方法,在模板方法中调用各个算法步骤方法。由子类:算法步骤的实现类实现或重载这些步骤方法。

示例:

public abstract class AbstractClass
{
    //模板方法
    public void TemplateMethod(){
        //流程调用各个算法步骤
        OperationA();
        OperationB();
    }
    
    protected abstract void OperationA();
    protected abstract void OperationB();
}
 
public class ConcreteClassA : AbstractClass
{
    protected override void OpertaionA(){
        //实现算法步骤A
    }    
    protected override void OpertaionB(){
        //实现算法步骤B
    }    
}

应用场景和优点:

单一职责、开闭、依赖倒置:细分粒度,分离了算法步骤的实现。

1、降低维护难度,方便修改和增加能用的算法步骤。

2、使原来的类的算法流程不再依赖具体的算法步骤,而能够改变算法步骤。

 

缺点:

应用:法术执行流程,登陆流程(配合策略模式)

 

 

参考:

《设计模式与游戏完美开发》

《HeadFirst设计模式》

https://www.cnblogs.com/dolphin0520/p/3919839.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值