我总结的设计模式

来源:互联网 发布:反恐精英控制台优化 编辑:程序博客网 时间:2024/05/09 09:19

0、设计模式是代码框架,它的好坏影响了代码质量;

      要不断思考、总结,形成一套完整、有效的设计模式库;

1、MVC

     很有效,适用于大部分场景,尤其适用于客户端UI开发;

     要以数据M为中心,显示V围绕数据走,控制器C负责协调;

     M:数据管理器 + 数据类定义;

            数据管理器:保存所有数据类对象;

     C:单例,保存Model对象、View对象,提供对外接口;

           一切的交互都通过ctrler完成:M-V间不直接访问,外界不能直接访问M、V;

2、总分树状法

     有依赖、聚合、组合 三种形式,且依赖度越来越大;

     依赖(know-a):类A访问类B的成员,或者类A在方法内创建并临时保存类B;

                                 最好把类B对象以“函数参数”形式传进来,并且类A不保存它的引用;

                                 例如玩家和主炮;

     聚合(has-a):类A有成员变量->类B对象的引用,但不是A创建的、不是它独占的、时间周期不一样;

                             用于“从属关系“的类间,总类方便管理各个子类;

                             例如雁群和大雁;

     组合(contain-a):类A有成员变量->类B对象的引用,是A创建的、是它独占的、时间周期一样;

                                    用于表示“整体与部分”,例如鸟和翅膀、人和眼睛;

     树状结构,总类通常为单例;

     优点:总类可监管各子类;可随意增删组件、拓展性好;

3、分层包装法

    上层:封装“访问下层 + 添加东西”,为更上层提供统一访问接口;

    下层:抽象、单一责任原则、耦合性好、健壮性;

               (单一责任原则例子:底1 - 加1,底2 - 加任意数,底3 - 加列表上所有数)

    例如UI - 数据管理器 - 数据库;

    例如A1 -> A2(A1+...) -> A3(A2+...) ->......;

4、相似类的继承抽象类法

     基类封装了抽象函数和通用操作,若干子类覆盖基类抽象函数并处理自己的特殊行为;

     用于相近类间,例如动物,猫、狗;

5、相似行为的继承接口法

    接口定义了通用行为函数,所有继承它的类都要事先它们;

    用于不相近但又有相似行为的类间,例如飞行,飞机、鸟、风筝;

6、触发器监听法

    就是观察者模式,全局监听事件;

    当事件发生时就执行相关操作(或者先缓存,某时间再统一处理);

    情况一:被监听者主动事件广播 [用于被监方主动想让外界监听的情况,例如资源加载]

                    方式1: 被监听方创建委托成员变量(每个委托负责一个事件),允许外界自己添加删除;

                    方式2:被监听方创建一个“接口列表成员变量”,每个监听者都要继承该接口并成为列表的一员;

    情况二:监听者主动监听 [用于监听方需要监听不同模块,主动创建监听的]

                   方式1:如果被监听方有委托成员变量,监听方在委托变量上加自己的函数就好(耦合性好);

                   方式2:监听方把自己的监听函数插进各个模块的代码中(灵活性好,但耦合性不好);

                                 操作包括addTrigger(), updateTrigger(), deleteTrigger();

                                 例如战斗引导,通过监听各实体行为以确定引导界面的显示;


0 0