《你必须知道的.net》读书笔记 003 —— 1.3 封装的秘密

简介:     好了继续,封装是一个简单的、基础的,没什么好说的,但是又说不明白的东东。没有源码就是封装起来了,有了源码就不是封装了,因为可以打开来随意修改了。呵呵,开个玩笑先。     字段、属性。     原来对于属性的看法是,如果要用属性而不用public的字段的话,需要两个条件:一是写自定义控件,目的是在属性窗口里可以查看属性,直接赋值;一是在属性里面做判断,比如age属性的set{}里面,可以判断一下,在 0到150才是有效地,超出了就视为无效。

    好了继续,封装是一个简单的、基础的,没什么好说的,但是又说不明白的东东。没有源码就是封装起来了,有了源码就不是封装了,因为可以打开来随意修改了。呵呵,开个玩笑先。

    字段、属性。

    原来对于属性的看法是,如果要用属性而不用public的字段的话,需要两个条件:一是写自定义控件,目的是在属性窗口里可以查看属性,直接赋值;一是在属性里面做判断,比如age属性的set{}里面,可以判断一下,在 0到150才是有效地,超出了就视为无效。如果既不做判断,又不是自定义控件的属性的话,那么是不是可以直接使用public的字段呢?

    我觉得是可以的。呵呵。

    我觉得类的最大的功劳是对函数的管理,其实属性也是一种函数,接口也是函数,类就是把相关的函数集中在一起,以便于“减少”关注的数量。比如指挥官指挥作战的时候,关注的是有几个军,几个师,而不是每一个士兵。

     封装要保证:
    
    1、隐藏系统实现的细节,保证系统的安全性和可靠性。
    2、提供稳定的对外接口。因此,系统中相对稳定部分常被抽象成接口。
    3、封装保证了代码模块化,提高了软件的复用和功能分离。

-----------
对于2和3不太理解,2里面,应该把变化的部分抽象成接口吧,就像策略模式里的那样?也许是笔误?
3模块化是面向过程的特点吧?给面向过程留一点呀,“提高”倒是挺准确,原来就有了,现在提高一步。
-----------

     封装规则

    1、尽量调用类的访问器,而不是成员。
    2、内部可以改,但是接口就不要变了。(不是书中的原文)
    3、将对字段的读写控制实现为属性,而不是方法。
    4、
    5、

     结论

    封装就是一个包装,将包装的内外分为两个空间,对内部实现数据私有,对外实现方法调用,保证了数据的完整性和安全性。

相关文章
|
Unix Java C#
记一次对Pdfium .Net包装器的跨平台封装
PDFium 是一个开源的 PDF 渲染引擎,最初由 Google 和 Foxit Software 合作开发,并且使用 BSD 3-Clause 许可协议发布。它被设计用于在各种平台上渲染 PDF 文件,包括 Windows、macOS 和 Linux。
647 3
|
12月前
|
存储 NoSQL MongoDB
.NET MongoDB数据仓储和工作单元模式封装
.NET MongoDB数据仓储和工作单元模式封装
200 15
|
12月前
|
JSON 数据格式
.net HTTP请求类封装
`HttpRequestHelper` 是一个用于简化 HTTP 请求的辅助类,支持发送 GET 和 POST 请求。它使用 `HttpClient` 发起请求,并通过 `Newtonsoft.Json` 处理 JSON 数据。示例展示了如何使用该类发送请求并处理响应。注意事项包括:简单的错误处理、需安装 `Newtonsoft.Json` 依赖,以及建议重用 `HttpClient` 实例以优化性能。
304 2
|
缓存 程序员
封装一个给 .NET Framework 用的内存缓存帮助类
封装一个给 .NET Framework 用的内存缓存帮助类
167 1
|
开发框架 前端开发 JavaScript
基于SqlSugar的数据库访问处理的封装,支持.net FrameWork和.net core的项目调用
基于SqlSugar的数据库访问处理的封装,支持.net FrameWork和.net core的项目调用
|
开发框架 缓存 NoSQL
基于SqlSugar的数据库访问处理的封装,在.net6框架的Web API上开发应用
基于SqlSugar的数据库访问处理的封装,在.net6框架的Web API上开发应用
|
开发框架 前端开发 网络协议
服务器开发- Asp.Net Core中的websocket,并封装一个简单的中间件
服务器开发- Asp.Net Core中的websocket,并封装一个简单的中间件
1159 118
|
消息中间件 存储 Docker
.Net Core对于`RabbitMQ`封装分布式事件总线
.Net Core对于`RabbitMQ`封装分布式事件总线
417 1
.Net Core对于`RabbitMQ`封装分布式事件总线
|
安全 数据库 数据安全/隐私保护
七天.NET 8操作SQLite入门到实战 - 第五天引入SQLite-net ORM并封装常用方法
七天.NET 8操作SQLite入门到实战 - 第五天引入SQLite-net ORM并封装常用方法
365 0
|
存储 文字识别 C#
一个基于百度飞桨封装的.NET版本OCR工具类库 - PaddleOCRSharp
一个基于百度飞桨封装的.NET版本OCR工具类库 - PaddleOCRSharp
805 0