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


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

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

    而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变成了一个只能走日的棋子“马”,这样的模式,我感觉更符合面向对象的思想.
    做其他棋子也会非常简单,只需要再创建属于其他棋子的类别(规则)就行了。
    还是那句话!有建议欢迎指出,大家一起讨论!

  • 相关阅读:
    用 pytube 爬取 youtube 视频
    Ubuntu W: GPG error: http://archive.ubuntukey....NO_PUBKEY 8D5A09
    windows 下 putty 登陆服务器 显示matlab图形界面
    python27 windows 下三种安装第三方库的办法
    MCMC: The Metropolis-Hastings Sampler
    MCMC: The Metropolis Sampler
    Latex 数学符号
    差点被坑
    新年新flag
    听报告为什么要问问题
  • 原文地址:https://www.cnblogs.com/bigshow1949/p/6343933.html
Copyright © 2020-2023  润新知