多封装,少开放

近日在修改了一下下cocos2d-x的引擎代码(为了自己的组件),发现有些类的访问形式比较怪异,明明有些接口是只有特定类及其内部函数才去访问,却不使用友元声明的形式进行数据访问——当然使用了普通非virtual的形式也就是意味着不建议重载。

故此:

1、建议派生类(或允许)重载的声明为虚函数即virtual类型,

2、强制派生类实现的声明为纯虚函数

3、不希望派生类重载或覆盖的函数则为普通类,如果访问群体有限定范围或者范围比较少,可以考虑增加友元+protected的方式进行访问控制,从而实现有效的派生传达,

时间: 2024-10-15 18:12:06

多封装,少开放的相关文章

多封装,少开放。强烈建议C++标准添加class之间的注入机制

近日在改动了一下下引擎代码(为了自己的组件),发现有些接口是仅仅有特定类及其内部函数才去訪问,却不使用友元声明的形式进行数据訪问--当然使用了普通非virtual的形式也就是意味着不建议重载. 故此: 1.建议派生类(或同意)重载的声明为虚函数即virtual类型, 2.强制派生类实现的声明为纯虚函数 3.不希望派生类重载或覆盖的函数则为普通类,假设訪问群体有限定范围或者范围比較少.能够考虑添加友元+protected的方式进行訪问控制,从而实现有效设计信息传达.可是有的时候我们不能保证可能须要

LayaAir之小游戏开放域开发

版本 : LayaAir2.0.0bate4 一 : 认识类 : Laya.WXOpenDataViewer , 顾名思义:此类封装了开放域(子域)的画布功能.这样的话就不需要程序员自己去写画布功能了. 其用法主要如下: ①:在UI编辑其中 , 使用此组件(可设置宽高,坐标等等)②:可以在代码中new,再设置宽高,坐标等,代码片段(伪代码)如下 private _my_open : Laya.WXOpenDataViewer = null; this._my_open = new Laya.WX

你好,C++(32) 类是对现实世界的抽象和描述 6.2.1 类的声明和定义

6.2  类:当C++爱上面向对象 类这个概念是面向对象思想在C++中的具体体现:它既是封装的结果,同时也是继承和多态的载体.因此,要想学习C++中的面向对象程序设计,也就必须从“类”开始. 6.2.1  类的声明和定义 面向对象思想把现实世界中的所有事物都看成是对象,而类是对所有相同类型对象的抽象,是对它们总体的一个描述.比如,学校有很多老师,张老师.李老师.王老师,虽然每个老师各不相同,是不同的对象个体.但他们都是老师这一类型的对象,有着共同的属性(都有姓名.职务)和相同的行为(都能上课.批

var与dynamic

var与dynamic 如果你用MVC写过程序,那么你应该知道ViewBag这个用于前后台的数据传递工具,那么你是否对ViewBag的用法感到过疑惑呢? ViewBag.Mode1l=new object(); ViewBag.Model2=new object(); ViewBag.Model3=new object(); ...... 我们知道,在使用对象属性的时候要先申明(即这个对象的类中已经定义了这个属性)才能使用(此时VS的自动提示能弹出此类的所有属性),然而使用ViewBag时你会发

兼容多数浏览器的js添加收藏夹脚本

浏览器不断发展,js的很多脚本需要跟进才能适应,目前多数代码对新版本浏览器(IE11, Firefox 27)无法适用,特关注跟进. 推荐代码1 适用浏览器:IE11(windows 8.1), Firefox 37.0.1(windows 8.1), 不适用浏览器:IE6(windows xp), 测试代码 <script type="text/javascript"> function addFavorite(){ var bookmarkUrl = "htt

更简单的 iframe从光标处插入图片(失去焦点后仍然可以在原位置插入)

转载请注明: TheViper http://www.cnblogs.com/TheViper 前天晚上发现上一篇iframe从光标处插入图片(失去焦点后仍然可以在原位置插入里面的用法在ie6,7中无效,好悲催,当初只测试了ie8就以为在ie6,7上也没问题. 昨天在github上发现了一个很好的富文本编辑器wangEditor,一看名字就是中国人写的.这个编辑器好在支持ie6+,另外最重要的一点,它在ie6,7,8上都可以做到失去焦点后仍然可以在原位置插入图片,而且代码量很少.于是很好奇的看看

MVC 之var与dynamic

如果你用MVC写过程序,那么你应该知道ViewBag这个用于前后台的数据传递工具,那么你是否对ViewBag的用法感到过疑惑呢? ViewBag.Mode1l=new object(); ViewBag.Model2=new object(); ViewBag.Model3=new object(); ...... 我们知道,在使用对象属性的时候要先申明(即这个对象的类中已经定义了这个属性)才能使用(此时VS的自动提示能弹出此类的所有属性),然而使用ViewBag时你会发现 ViewBab. 之

服务器常见的四种×××及防御

随着互联网安全的重要性愈演愈烈,服务器作为存储和支撑数据运行的载体,在维护和防×××方面也显得越来越重要.尤其是服务器被×××的影响非常大,不但会影响到网站的权重,严重的还会严重影响到业务的正常运行,做好服务器安全防护是每位站长必备的职责.下面小编就给大家分享一下怎么预防服务器的四种常见×××? 服务器防××× 1.端口××× 端口是病毒.×××***的最主要途径,所有端口都有可能是×××的利用对象,通过端口对服务器实行×××.具体怎么×××这里就不细说了,主要讲一下怎么预防,想要预防×××通过

微服务中台落地 中台误区

小结: 1. 微服务中台不是 /1堆砌技术组件就是中台 /2拥有服务治理就是中台 /3增加部分业务功能就是中台 /4Cloud Native 就是中台 https://mp.weixin.qq.com/s/uuaraAWReOYeZuEJiLs9dw 企业微服务中台落地实践和思想之我见 From  朱德明 InfoQ 4/3 微服务和中台是这几年非常时髦随处可见的词,最先在一批互联网企业中开始谈论和建设,并逐渐的蔓延至一些传统企业和传统的 IT 部门,以至于现在在构建信息系统时,很多企业都在说要