美文网首页
几个设计模式的要点

几个设计模式的要点

作者: Nick_Can | 来源:发表于2018-02-26 17:51 被阅读0次

设计模式嘛,资料太多了,其实只要明白个大致就好,实际运用有很多改进,或者多种模式混合的情况。如果能掌握其精髓,明白为了解决什么问题,而采用了什么方法,这才算真正学会了设计模式,才能灵活运用。但是大部分情况得在实际项目中才能体会得到呀,所以这里也就简单的列下个人理解,对于编码时的结构设计,到现在还是挺让我纠结的。(我又不是处女座,为毛啊!)(吐槽下,这段太啰嗦了)

六大原则

  1. 开闭原则
  2. 里氏替换原则
  3. 依赖倒置原则
  4. 接口隔离原则
  5. 迪米特法则,又称最少知道原则
  6. 合成复用原则

观察者模式(Observer Pattern)

  • 常说的事件机制。
  • 好处在于可以实现一对多的关系。发送者只管发送,如果要新增观察者,不需要修改已有代码,让新观察者自己注册到发送者去即可。
  • 主要成员:主题(Subject,或者说发送者),观察者(Observer)
  • 发送者成员:添加观察者的方法(Add),移除观察者的方法(Remove),存储观察者的数据结构(Dictionary/List),触发事件的接口(Fire)。
  • 观察者成员:供发送者调用的接口(或者说对通知作出响应的接口)
  • 比如游戏中金币发生改变,然后UI界面中的TopBar界面的金币数量需要刷新,道具界面的金币数量也需要刷新。假设没有观察者模式,那么我们需要先获取所有需要刷新的界面,判断界面不为空,然后调用刷新接口。而有了观察者模式,只需要各个需要刷新的界面,自己注册事件监听,界面移除,自己移除监听。简单的说就是解耦合啦,各管各的。
  • 观察者成员在C#中不一定要是个类,可以是个Action什么的,反正本质也就是提供一个可以让发送者调用的方法。

状态模式(State Pattern)

  • 常说的状态机。
  • 主要成员:状态类(State),状态管理类(State Machine)。
  • 状态类:一些和该状态要做的事情有关的方法咯。可能有OnEnter,OnUpdate,OnExit分别表示进入该状态要做什么,状态中要做什么,离开状态要做什么。也可能就一个DoState。
  • 状态管理类:当前状态类的引用,改变状态的接口。
  • 状态模式也是为了 对扩展开放,对修改关闭。减少复杂的if-else判断分支。
  • 比如某个游戏界面中有开启,关闭,等待匹配,挂机,战斗中等状态,在不同状态时,某个界面块有不同的表现,这时候会有一个UpdateSth的方法。假设没有状态模式,那么就需要在UpdateSth通过if-else来判断当前状态应该做什么,一旦有新的状态加入,又需要修改这个方法。 但是有了状态模式,所有状态都会实现一个UpdateSth方法,而界面通过改变状态,让状态类自行调用自己的UpdateSth。这样就算有新状态加入,也不需要修改已有的UpdateSth代码,只需要添加新的状态类即可。 从而保证了代码的稳定性,不动到旧代码。

对象池模式(Object Pool)

  • 常说的回收池/对象池。
  • 主要成员:对象池的管理者(ObjectPool)(单例模式)
  • 对象池的管理者:存储对象的数据结构ObjectPool(Stack/Queue/List),获取对象的方法(AcquireObject),返还对象的方法(ReleaseObject)。
  • 对象池模式算是单例模式和享元模式的混合吧,当然还是和享元模式有点本质的不同的。
  • 主要是对象的复用,可能还需要对复用对象的数据进行重置,然后提供给调用者使用。
  • 游戏中的子弹回收。

迭代器模式(Iterator Pattern)

  • C#中的IEnumrabale和IEnumrator。
  • 主要成员:迭代器(iterator),迭代器获取器(Container)
  • 迭代器:获取下一个对象的方法(Next), 是否有下一个对象(HasNext) (变体很多,本质就是为了获取下一个对象)
  • 迭代器获取器:获取迭代器的方法(GetIterator)
  • 迭代器平时还没咋用到,主要是C#中的foreach,StartCoroutine借助了迭代器模式。

参考

菜鸟教程-设计模式

相关文章

  • 几个设计模式的要点

    设计模式嘛,资料太多了,其实只要明白个大致就好,实际运用有很多改进,或者多种模式混合的情况。如果能掌握其精髓,明白...

  • 设计模式要点

    OO指面向对象 OO基础 抽象 封装 多态 继承 OO原则 封装变化 多用组合,少用继承 针对接口编程,不针对实现...

  • 设计模式

    设计模式的要点就是“寻找变化点,然后在变化点出应用设计模式,从而来更好的应对需求的变化” “组件协作”模式 “组件...

  • 西拉法叶的雪:你所知道的顶层设计到底是什么?(15)

    平台模式——产业链整体控制之术(下) 平台模式的设计,要具备以下的流程与要点: 平台模式设计流程第一,针对整条产业...

  • 夜间模式设计要点

    最近实习中有遇到做夜间模式的需求,因而对夜间模式的设计要点进行了总结:

  • 设计模式中的那些工厂

    设计模式中的那些工厂 Intro 设计模式中有几个工厂模式,聊一聊这几个工厂模式的各自用法和使用示例,工厂模式包含...

  • 2018-09-26

    笔试要点: ①JVM内存管理机制和垃圾回收机制 ②JVM内存调优 ③ 设计模式(熟悉常见设计模式的应用场景,会画类...

  • 游戏开发中的MVVM设计模式

    mvc设计模式 说到mvvm设计模式不得不先说说mvc设计模式。mvc其实不是一个模式,而是几个模式结合使用的结果...

  • 工厂模式

    设计模式分为三大类,每个类别都包含几个设计模式: 创建型设计模式:侧重于对象的创建。 结构型设计模式:侧重于接口的...

  • 16个PHP设计模式详解

    说明:该教程全部截选自实验楼教程【16个PHP设计模式详解】:主要介绍16个常用的设计模式的基础概念和技术要点,通...

网友评论

      本文标题:几个设计模式的要点

      本文链接:https://www.haomeiwen.com/subject/banyxftx.html