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

  • 相关阅读:
    水池问题的lua语言算法(面试题分析:我的Twitter技术面试失败了)
    grep
    hdu 4455 Substrings(计数)
    Concurrency Programming Guide 并发设计指引(二)
    ASP.NET 预编译命令(解决发布后第一次访问慢问题)
    将浏览页面变为可编辑状态
    windows系统上利用putty通过SSH连接亚马逊AWS服务器
    SQL Server2008 R2 数据库镜像实施手册(双机)SQL Server2014同样适用
    非域环境下使用证书部署数据库(SqlServer2008R2)镜像
    遇到问题---hosts不起作用问题的解决方法
  • 原文地址:https://www.cnblogs.com/bigshow1949/p/6343933.html
Copyright © 2011-2022 走看看