面向对象设计原则

来源:互联网 发布:高爆地雷升级数据 编辑:程序博客网 时间:2024/06/14 17:06

 一:面向对象设计的目标

      软件是一项复杂多变的工程,需求可能会变、试用场景会变,如何设计出一个好的框架是非常重要和必要的。通常试用可扩展性、灵活性、可插入性等三个维度评估设计的好坏。

   a)可扩展性:新的功能模块很容易插入到系统中,而较小的改变或者影响旧系统。

   b)灵活性:可以运行代码平稳修改,而不涉及到其它模块。

   c)可插入性:很容易将一个类或者模块抽离出去,同时将一个相似的类或者模块加入进来。

二:实现策略

      为了实现复杂多变及好的设计方案,面向对象编程要遵循下面五个基本原则:a)发现变化,封装变化 b)面向接口或者抽象类编程,而不是面对实现编程 c)分离变化维度,单一职责原则 d) 多使用动态绑定,少使用静态绑定,多使用组合,少使用继承。 e)创建和使用分离。

     

     具体原则细节如下

     2.1 发现变化,封装变化

          原理: a)找出类中需要变化的模块,把它单独抽象出来,不要和不需要变化的模块混淆在一起。 b)把需要改变的部分抽取出来,以便以后轻易的改动和扩充这部分,而不影                             响不变的部分。

         举例:例如我们想抽象身份证信息,我们分析身份证信息包括姓名、性别、名族、出生、住址、,身份证号码、个人图像、签发机关、有效期限。仔细分析我们发现 姓名、性     别、名族、出生、住址、、身份证号、签发机关是不变的,一旦办理了身份证,这些信息是不会变的;个人图像,有效期限是会变化的,一旦身份证丢失了或者过期了就    需要重新办理,新办理的身份证只需要更新新的图像及有效期。在我们程序中就可以抽象一个身份证类,提供各种构造函数,支持初始化所有的字段。更新身份证的时候                     只需要传入图像及有效期限即可。

  2.2 面向接口或者抽象类编程,而不是面对实现编程

         原理:a)抽象接口:抽象出固定却能描述一组任意行为的抽象期,这个抽象期就像抽象基类或者抽象基类或者接口,任意可能的行为就是可能的派生类。

                     b)针对接口的设计: 由于子模块之间依赖于固定的抽象,所以它对于更改是可以关闭的。

        举例: 例如我们常见的微信支付功能,我们简单的认为一个支付流程包括以下步骤,绑定银行卡,选择想要支付的银行卡,输入支付金额,支付,等待支付结果。那微信就、可以把一个支付流程抽象成一个含有这些步骤的接口。而想要接入的银行,微信只需要根据支付流程及参照接入银行的api就可以接入特定的银行。这样的话,面向接口编程,接入的新银行,完成不影响就银行的使用。

   2.3 分离变化维度,单一职责

       原理:a)单一职责原则:一个类应该只有一个引起它变化的原因。b)如果你能想到一个或者多个动机去改变一个类,name这个类就会多余一个原则。

        举例: 我们生活中常见的政府部门,它们也是有划分不同职责的,而不是混淆在一起,一个部门啥活都做。例如交警只负责和交通相关的工作;警察主要维护公共治等;                       这样的好处就是分工明确。

2.4 动态绑定,多用组合、少用继承

       原理:a)多使用组合和聚合,而不是使用继承达到目的。b)该原则就是在一个新的对象里使用一些已经有的对象,是之成为对象的一部分;新的对象通过这些对象的委派                      达到复用已有功能的目的。

     举例: 比我我们眼镜框有 赤、橙、黄、绿、青、蓝、紫七中颜色,镜片有圆形和方形两种。如果我们想要所有的眼镜对象[赤色圆眼镜、赤色方眼镜、橙色圆眼镜、橙色方眼镜、。。。]。 如果使用继承实现的话,需要7*2=14个类,而如果采用组合实现的话,把眼镜框抽象成类,将眼镜片抽象成类,只需要7+2=9个类。

2.5 对象的创建和使用分离

      原理:a)对象的时候和创建分离,要么构造对象要么使用对象。这样做的好处就是降低耦合加强内聚。

      举例: 如果你吃了一只鸡,觉得味道不错,你难道一定要见到那只母鸡。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 频繁的假性宫缩怎么办 显卡风扇不转了怎么办 老是想不好的事怎么办 做人工受孕多囊怎么办 子宫内有囊肿该怎么办 子宫长了个囊肿怎么办 怀孕后不想要该怎么办 20多岁雌激素低怎么办 生完小孩后子宫下垂怎么办 取环之前同房了怎么办 做人流后又怀孕怎么办 仓鼠长了个肿瘤怎么办 过敏留下的黑印怎么办 脸上痘痘发炎了怎么办 脸上皮肤红痒怎么办啊 皮肤有一片红痒怎么办 脸过敏期间很干怎么办 怀孕了用了消糜栓怎么办 乳酸杆菌少或无怎么办 怀孕了白带有异味怎么办 怀孕清洁度iv度怎么办 怀孕了下面有异味怎么办 孕妇尿白细胞1是怎么办 药流期间喂奶了怎么办 20多岁卵巢早衰怎么办 3岁儿童肚子胀气怎么办 肚子又胀又痛怎么办 1岁宝宝肚子胀气怎么办 2岁宝宝肚子胀气怎么办 产后腰粗肚子大怎么办 发烧后腹泻拉水怎么办 又吐又拉还发烧怎么办 喝中药恶心想吐怎么办 生完孩子肛门疼怎么办 拉完大便肛门痛怎么办 肚子总是凉凉的怎么办 京东金条风控了怎么办 京东维修没发票怎么办 假牙吞到肚子里怎么办 眼睛一只大一只小怎么办 一个眼睛大一个眼睛小怎么办