面向对象 *** 的基本思想 面向对象设计思想是什么( 二 )
public interface IMessage{void Send(string msg);}public class EmailMessage : IMessage{public void Send(string msg){Console.WriteLine($"send email message {msg}");}}public class WechatMessage : IMessage{public void Send(string msg){Console.WriteLine($"send wechat message {msg}");}}class Program{static void Main(string[] args){List messageList = new List();messageList.Add(new EmailMessage());messageList.Add(new WechatMessage());messageList.ForEach(s=>s.Send("test message"));}} 为什么说能提高扩展性呢?如果这时消息组件需要扩展发送短信的消息种类 , 只需要编写短信类型的消息类实现 IMessage 接口的 Send*** 即可 。还有一种场景 , 比如登陆的时候 , 有基于用户名密码的认证、企业微信的认证、钉钉的认证、和对接第三方的认证 , 又应该怎么设计呢?
我们虽然都在使用着面向对象的语言 , 但很多的时候思维还是面向过程的 , 具体体现在:
- 实体类的属性直接定义为 public , set 和 get 都安排上 , 外部可以任意获取和赋值 , 很多时候使用代码生产工具直接生产实体类 , 默认的 set 和 get 都是 public , 也没有去依据具体的业务进行修改 , 严重破坏了封装特性;
- 数据和行为的分离 , 也就是所谓的贫血模式 , 但真正的对象是数据行为在一起的 , 我们可能每天都在写这样的代码 , 一种面向过程式的代码;
- 为了代码复用 , 代码中会存在大量的 Helper 类或者 Utils、Common 类 , 这些类通常是静态类 , 里面有各种各样的静态 *** , 在往里面添加 *** 时需要思考下 , 真的需要放到这里吗?
- 按照功能驱动 , 比如页面上的一个按钮操作 , 对应了一个 API 接口 , 不管你的代码时如何设计和分层 , 一层层往下知道数据库访问 。
这些面向对象的基础知识是学习设计模式的根基 , 掌握基础知识 , 然后愿意去思考 , 总结才能够学习好设计模式 , 并将其应用到实际的工作中 。下一篇将介绍面向对象中的常用设计原则 , 设计模式也都是基于这些设计原则演化而来 。
推荐阅读
- 人突然离世的感悟短句
- 充电桩安装需要的条件 电动汽车怎么充电正确
- ios上的安卓虚拟机 电脑如何打开apk文件
- 黑苦荞茶的功效与作用及食用 ***
- 新手开店适合开的店 现在开店做什么生意比较好
- 健康管理师和营养师的区别
- 品牌建设的五个要素 互联网品牌建设的效果
- 白凉茶的生产工艺白凉茶的功效和作用
- 荣盛冰箱的特点
- 微孔加工的方法有哪些
