zoukankan      html  css  js  c++  java
  • “给马一个规则,让它只能走日”设计模式

    在我心里,面向对象应该是这样的:

    “给马一个规则,让它只能走日”设计模式

    而MVVM看上去是将方法从VC分离出来,但是并没有这种感觉,所以我就尝试用我想要的方式写了一个象棋棋子“马”,我称这种设计模式为“给马一个规则,让它只能走日”设计模式.

    讲之前先说一下WWeChat,其实更新了,只是没写讲解…改动的还是挺多的,代码在这里.


    效果图:

    Chess.gif

    下面讲我这种设计模式(如果你有建议,欢迎指出!)

    • 首先我创建了一个UIButtom,名字是Chess

      顾名思义,这个类是所有棋子的父类

    .h

    .m

    通过这些代码,棋子获得了被拿起、放下以及分红方、黑方的能力.

    • 然后给它创建一个类别Chess+Move

    让棋子获得任意移动的能力,不写在Chess里面,而是写到Chess+Move里面,我感觉更符合面向对象。

    • 现在Chess已经可以了,现在创建一个马

      创建Chess的子类House,获得棋子的基本能力,

    • 创建House+rule,让马只能走日的规则
    • 创建棋盘UIView类的Map

    .h

    .m

    这里看看就行了,就是画线。

    • 走马

      Map中创建一个点击事件

    整个项目我都用了一个方法来避开复杂的位置计算,将虚拟的棋盘,化成一部分一部分,根据行、列来确定棋子位置.


    总结

    可以看出,我在这里通过类别和继承来使一个Button变成了一个只能走日的棋子“马”,这样的模式,我感觉更符合面向对象的思想.
    做其他棋子也会非常简单,只需要再创建属于其他棋子的类别(规则)就行了。
    还是那句话!有建议欢迎指出,大家一起讨论!

  • 相关阅读:
    记录-tomcat启动项目配置
    记录 -- js浏览器窗口关闭调用ajax
    远程桌面时出现身份验证错误,要求的函数不受支持
    记录-马斯洛需求层次理论模型
    记录-powerDesigner 导入sql文件注释问题
    记录-Java md5加密
    记录--js 剪贴板操作 (转载)
    如何判定一台计算机的唯一性
    GO_OOP简单摘要
    后台执行命令
  • 原文地址:https://www.cnblogs.com/bigshow1949/p/6343933.html
Copyright © 2011-2022 走看看