当前位置: 首页 > news >正文 衡阳北京网站建设网站单页制作 news 2025/10/25 7:37:30 衡阳北京网站建设,网站单页制作,网站域名维护,公司网站建设浩森宇特一、面向对象编程 1.1 概述 简称Object Oriented Program(OOP)#xff0c;指以类或对象作为基础组织单元#xff0c;遵循封装、继承、多态以及抽象等特性#xff0c;进行编程。其中面向对象不一定遵循封装、继承、封装和多态等特性#xff0c;只是前人总结的套路规范指以类或对象作为基础组织单元遵循封装、继承、多态以及抽象等特性进行编程。其中面向对象不一定遵循封装、继承、封装和多态等特性只是前人总结的套路规范遵循该套规范可以快速准确以及优雅的完成面向对象编程。 1.2 基本思想 软件系统设计的三个阶段分析、设计以及实现。在面向对象领域分别对应着面向对象分析(OOA)面向对象设计(OOD)以及面向对象编程(OOP)。OOA和OOD主要用于解决被分为哪些类类的属性和行为以及类与类之间的组织【交互关系】 等问题。整体来看OOA - 做什么、 OOD - 怎么做、OOP - 将分析和设计翻译为代码的过程。 1.3 四大特性详解 1.3.1 封装 本质上就是访问权限控制哪些内容是允许访问的哪些是不允许访问的防止权限的滥用。存在的意义 保护数据不被随意滥用, 提高代码的可维护性通过暴露有限的行为, 提高代码的易用性。 1.3.2 继承 对现实世界的直接映射便于理解 提高代码的复用性。但要注意继承的层级层级过深会降低代码的可读性。 1.3.3 抽象 隐藏方法的具体实现。从调用方角度来看并不关心方法是怎么实现的只需告诉该方法能做什么即可。类比到现实世界买车的时候仅关注车提供的功能并不关注你是怎么做出来的。 本质 就是复杂世界或复杂系统提供的信息太多了有些信息是完全没必要关注的。因此仅关注你所关心的即可。 实现方式 Java中提供了接口和抽象语法 存在意义 提高代码可扩展性可读性和可维护性是处理复杂系统的有效手段。 1.3.4 多态 指子类可以灵活替换父类需要编程语言特殊语言支持。类似于Java的接口、抽象类等。 存在意义提高代码的可扩展性可复用性是设计模式的基础。可复用指的是如果不采用多态的方式相同的代码可能需要使用多份。 1.4 常见的面向对象写为面向过程的示例 1.4.1 Getter和Setter方法的滥用 上面说了面向对象是通过访问权限控制隐藏内部数据仅提供有限的接口给外部使用。但是普通对象的getter和setter方法滥用就会导致对象中虽然定义属性是private但实际上是public的操作权限。若类中存在容器对象,即使只提供getter方法,也可以修改容器中的数据推荐做法为 public ListShoppingCartItem getItems() {return Collections.unmodifiableList(this.items); }1.4.2 全局变量和全局方法的滥用 一般项目中,会写一个大而全的Constants常量类明显违背了面向对象设计存在以下缺点 影响代码的可维护性。由于这个类是全局的许多开发人员都会修改提交冲突概率增大同时查找比较耗时增加代码的编译时间。这个类全局的很多地方都会被用到一旦constants类发生变化许多依赖它的类都会重新进行编译非常耗时影响代码的复用性。若某个第三方组件依赖项目中的某一类而这个类又依赖constants类导致大量无关的常量被引入进来。 推荐做法尽量做到职责单一按照业务的不同划分不同xxxcConstants类 1.4.3 定义数据和方法相分离的类 就是经常使用的MVC模式dao层的实体类和service服务类相分离即基于贫血模型的开发方法。 1.4.4 底层思考过程 现实中为了完成一个任务一般会思考先做什么后做什么如何一步步完成任务这就是典型的面向过程适合简单系统开发例如MVC开发模式。而面向对象是自底向上的逻辑先构建每个任务的模块然后思考设计类与类之间的交互最后按照流程组装起来完成任务适合复杂系统的开发。 二、接口vs抽象类的区别 2.1 定义 接口指的是定义一组协议或规范。接口通常只定义方法的声明不做具体的实现接口不能创建对象实现接口时必须实现所有的方法抽象类是对成员变量和方法的抽象。抽象类不允许被实例化抽象类可以包含属性和方法子类必须实现抽象类的所有抽象方法 2.2 解决问题类型 2.2.1 接口 主要解决的是has-a问题降低代码之间的耦合性将接口和实现相分离提高代码的扩展性。接口代表自上而下的设计思路。 2.2.2 抽象类 主要解决的是is-a问题提高代码的复用性。抽象类代表自下而上的设计思路。 为什么不直接使用普通类的原因在于抽象类的抽象方法强制开发人员必须实现而普通类则没有要求那么可能会造成某些方法应该被实现却没有被实现不利于代码的可读性同时无法使用多态特性。 2.3 实际使用场景 若要表示is-a关系且为了提高代码的复用性则使用抽象类 若要表示has-a关系且为了提高代码的扩展性则使用接口。 三、基于接口而非实现编程的讨论 概述基于接口而非实现编程又称基于抽象而非实现编程将接口和实现相分离隐藏不稳定的实现暴露稳定的接口实现解耦增加代码的可扩展性。 实现步骤 接口函数的命名要抽象。反例uploadAliyun(), 正例upload()暴露通用统一的方法。 封装具体实现细节 什么场景下使用该原则 该条原则设计的初衷是面对未来变化场景。若某个业务场景的实现只有一种方式就没必要设计接口否则就需要设计接口。 思考 接口的思想封装隔离将调用和创建相互分离。 封装通常封装是指对数据的封装但是这里的封装是指对被隔离体的行为的封装或者是 对被隔离体的职责的封装 隔离隔离指的是外部调用和内部实现外部调用只能通过接口进行调用而外部调用是不知道内部具体实现的也就是说外部调用和内部实现是被接口隔离开的。 【使用接口的好处】由于将外部调用和内部实现隔离开来只要接口定义的行为不变内部实现 的变化就不会影响到外部系统的调用使得系统更加灵活具有更好的扩展性和可维护性同时具体的实现可以动态切换而不会影响到系统即【接口是系统可插拔性的保证】。例如 ListString list new ArrayList()仅是使用了Java的多态语法使用方即客户端不仅知道接口还知道具体的实现是不满足面向接口编程的。解决方案 简单工厂模式来解决 四、组合和继承的讨论 继承虽然可以提高代码的可复用性但存在继承层次过深导致代码难维护的问题。 可以通过组合接口和委托三个技术手段来解决。适用场景 若类之间的继承结构稳定且继承层次比较浅最多有两层继承关系不复杂考虑使用继承否则尽量使用组合来替代继承。 例子 A类和B类之间没有继承关系但是都用到了URL拼接和分割的功能。若为了代码复用抽出一个父类会影响代码的可读性此时使用组合则更加合理更加灵活。 五. 如何提高代码的可复用性 减少代码耦合。耦合代码严重的话等想抽取可复用代码时会导致大量的代码被修改增加了bug的概率满足单一职责原则。职责越单一可复用性越高模块化。对模块类或函数要善于封装和抽取通用的代码通用代码下沉。指的是代码要进行合理的分层越底层的代码要封装的足够抽象和通用这样可以最大程度的增加可复用性利用继承多态抽象以及封装的思想来设计代码适度的使用设计模式 编写可复用性代码的思考遵循Rule of Three原则即第一次写代码不考虑复用性第二次遇到复用场景时再考虑重构进行复用。 六、设计模式本质思考 设计模式的本质就是对某个固定场景的最优解这个最优解是一套经典模板并不是所有的场景都适合。目的是为了修改少量代码就可以适应需求的变化。学习设计模式需要进行如下思考 适用场景优点和缺点。不使用设计模式在面对未来变化时有哪些不足使用设计模式在面对未来变化时有哪些好处满足哪些设计原则稳定点和不稳定点是什么。所谓稳定点指的是不变的点不稳定点指的是变化的点 七、设计模式原则以及目标之间的关系 文章转载自: http://www.morning.qztdz.cn.gov.cn.qztdz.cn http://www.morning.yqqxj1.cn.gov.cn.yqqxj1.cn http://www.morning.srwny.cn.gov.cn.srwny.cn http://www.morning.bhwz.cn.gov.cn.bhwz.cn http://www.morning.tynqy.cn.gov.cn.tynqy.cn http://www.morning.lgsqy.cn.gov.cn.lgsqy.cn http://www.morning.pqsys.cn.gov.cn.pqsys.cn http://www.morning.lnckq.cn.gov.cn.lnckq.cn http://www.morning.xqgfy.cn.gov.cn.xqgfy.cn http://www.morning.rjhts.cn.gov.cn.rjhts.cn http://www.morning.clkjn.cn.gov.cn.clkjn.cn http://www.morning.cwlxs.cn.gov.cn.cwlxs.cn http://www.morning.qwmpn.cn.gov.cn.qwmpn.cn http://www.morning.blzrj.cn.gov.cn.blzrj.cn http://www.morning.htsrm.cn.gov.cn.htsrm.cn http://www.morning.srbfp.cn.gov.cn.srbfp.cn http://www.morning.wbllx.cn.gov.cn.wbllx.cn http://www.morning.xrwbc.cn.gov.cn.xrwbc.cn http://www.morning.cwgpl.cn.gov.cn.cwgpl.cn http://www.morning.rzbcz.cn.gov.cn.rzbcz.cn http://www.morning.rfbt.cn.gov.cn.rfbt.cn http://www.morning.fhrgk.cn.gov.cn.fhrgk.cn http://www.morning.btblm.cn.gov.cn.btblm.cn http://www.morning.rfmzs.cn.gov.cn.rfmzs.cn http://www.morning.qbdqc.cn.gov.cn.qbdqc.cn http://www.morning.egmux.cn.gov.cn.egmux.cn http://www.morning.nylbb.cn.gov.cn.nylbb.cn http://www.morning.prmyx.cn.gov.cn.prmyx.cn http://www.morning.sjsks.cn.gov.cn.sjsks.cn http://www.morning.rdnjc.cn.gov.cn.rdnjc.cn http://www.morning.rfxg.cn.gov.cn.rfxg.cn http://www.morning.fnlnp.cn.gov.cn.fnlnp.cn http://www.morning.prlgn.cn.gov.cn.prlgn.cn http://www.morning.mmosan.com.gov.cn.mmosan.com http://www.morning.kpyyf.cn.gov.cn.kpyyf.cn http://www.morning.gyqnc.cn.gov.cn.gyqnc.cn http://www.morning.yqwsd.cn.gov.cn.yqwsd.cn http://www.morning.bmpjp.cn.gov.cn.bmpjp.cn http://www.morning.lgtzd.cn.gov.cn.lgtzd.cn http://www.morning.brqjs.cn.gov.cn.brqjs.cn http://www.morning.lnbcg.cn.gov.cn.lnbcg.cn http://www.morning.ksjmt.cn.gov.cn.ksjmt.cn http://www.morning.dnqpq.cn.gov.cn.dnqpq.cn http://www.morning.qfwfj.cn.gov.cn.qfwfj.cn http://www.morning.tstwx.cn.gov.cn.tstwx.cn http://www.morning.sjwws.cn.gov.cn.sjwws.cn http://www.morning.jrslj.cn.gov.cn.jrslj.cn http://www.morning.btqrz.cn.gov.cn.btqrz.cn http://www.morning.ltffk.cn.gov.cn.ltffk.cn http://www.morning.gtxrw.cn.gov.cn.gtxrw.cn http://www.morning.ymwrs.cn.gov.cn.ymwrs.cn http://www.morning.mhxlb.cn.gov.cn.mhxlb.cn http://www.morning.ljzqb.cn.gov.cn.ljzqb.cn http://www.morning.rwtlj.cn.gov.cn.rwtlj.cn http://www.morning.hqwxm.cn.gov.cn.hqwxm.cn http://www.morning.gjqgz.cn.gov.cn.gjqgz.cn http://www.morning.ndcf.cn.gov.cn.ndcf.cn http://www.morning.mlycx.cn.gov.cn.mlycx.cn http://www.morning.clybn.cn.gov.cn.clybn.cn http://www.morning.nyqnk.cn.gov.cn.nyqnk.cn http://www.morning.zljqb.cn.gov.cn.zljqb.cn http://www.morning.nzmqn.cn.gov.cn.nzmqn.cn http://www.morning.wyzby.cn.gov.cn.wyzby.cn http://www.morning.mtqqx.cn.gov.cn.mtqqx.cn http://www.morning.mtxrq.cn.gov.cn.mtxrq.cn http://www.morning.wgqtj.cn.gov.cn.wgqtj.cn http://www.morning.gtmdq.cn.gov.cn.gtmdq.cn http://www.morning.alwpc.cn.gov.cn.alwpc.cn http://www.morning.qxkcx.cn.gov.cn.qxkcx.cn http://www.morning.mjbjq.cn.gov.cn.mjbjq.cn http://www.morning.qgbfx.cn.gov.cn.qgbfx.cn http://www.morning.lnnc.cn.gov.cn.lnnc.cn http://www.morning.fkffr.cn.gov.cn.fkffr.cn http://www.morning.khtyz.cn.gov.cn.khtyz.cn http://www.morning.qnhcx.cn.gov.cn.qnhcx.cn http://www.morning.pjwrl.cn.gov.cn.pjwrl.cn http://www.morning.gydth.cn.gov.cn.gydth.cn http://www.morning.pnljy.cn.gov.cn.pnljy.cn http://www.morning.fgxnb.cn.gov.cn.fgxnb.cn http://www.morning.gwxwl.cn.gov.cn.gwxwl.cn 查看全文 http://www.tj-hxxt.cn/news/247587.html 相关文章: 网站制作做站长挣钱良乡网站建设 o2o商城网站系统开发南宁关键词自然排名 怎么做关不掉的网站北京做网站建设价格低 ae做动画教程网站源码之家免费 优秀作文大全网站上海网站建设费用多少钱 国外主流网站开发技术群辉服务器建设的网站 广州市外贸网站建设服务机构沈阳网站设计公司 网站建设制作定制重庆新闻联播 找人做一个网站需要花多少钱wordpress 附件下载 东圃做网站的公司网站开发了下载文件需要 网站中的表单怎么做招商网址 金华做企业网站公司做网站应该注意哪些方面 建设一个网站需要些什么材料广告网站建设与制作 展示型网站建设的标准杭州p2p网站建设 网站 支持建设单位企业网站一定要备案吗 凌河建设网站宿州专业网站建设公司 湖南建设长沙网站建设价格上海网络企业优化公司 网站后台维护系统客户管理系统官网 学校网站建设工作高端品牌名称 购买一个网站域名需要多少钱手机网站设计手机壳尺寸一览表 三合一网站开发有什么区别搜索引擎的两个基本方法 开发网站公司名称传奇版本网页游戏 不同网站建设特点河北网站制作报价 搭建网站 在线浏览功能邯郸网站建设 漫画门户网站怎么做的建设管理网站首页 哪个网站找住宿的便宜小程序开发文档api 贵港公司做网站网站建设费 大创 任丘做网站价格0基础学网站建设 重庆一品建设集团有限公司网站江门网页建站模板 推广型网站开发公司公司网站开发找哪家