OCP

学习笔记-设计模式的七大原则

眉间皱痕 提交于 2020-08-05 08:56:31
一、单一职责原则 降低类的复杂度,一个类只负责一项职责 提高类的可读性,可维护性 降低变更引起的风险 通常情况下,我们应当遵守单一职责原则,只有逻辑足够简单,才可以在代码级违反单一职责原则,只有类中方法数量足够少,可以在方法级别保持单一原则 二、接口隔离原则 三、依赖倒转原则 高层不应该依赖低层模块,二者都应该依赖其抽象 抽象不应该依赖细节,细节应该依赖抽象 依赖倒转的中心思想是面向接口编程 依赖倒转原则是基于这样的设计理念,相对于细节的多变性,抽象的东西要稳定的多。以抽象为基础搭建的架构比以细节为基础的架构要稳定的多,在java中抽象指的是接口或抽象类,细节就是具体的实现类 使用接口或抽象类的目的是制定好规范,而不涉及任何具体的操作,所展现细节的任务交给他们的实现类去完成 四、里氏替换原则 五、开闭原则OCP 开闭原则是编辑中最基础,最重要的原因 一个软件实体如类,模块和函数应该对扩展开放(对提供代方),对修改关闭(对使用方),用抽象构建框架,用实现扩展细节 当软件需要变化时,尽量通过扩展软件实体的行为变化,而不是通过修改已有的代码来实现变化 编辑中遵循其它原则,以及使用设计模式的目的就是遵循开闭原则 六、迪米特原则 七、合成复用原因 来源: oschina 链接: https://my.oschina.net/funwell/blog/4326758

数据库周刊33丨腾讯Tbase新版本发布;“2020数据技术嘉年华”有奖话题遴选;阿里云技术面试题;APEX 实现数据库自动巡检;MYSQL OCP题库……

别来无恙 提交于 2020-07-28 17:22:35
摘要: 墨天轮数据库周刊第33期发布啦,每周1次推送本周数据库相关热门资讯、精选文章、干货文档。 热门资讯 1、中国移动国产OLTP数据库中标公告:南大金仓阿里,万里开源中兴 分获大单 【摘要】近日,中国移动公布了 OLTP 自主可控数据库联合创新项目中标公告。公告显示:国产数据库中,南大通用、阿里巴巴、中兴通讯、人大金仓、万里开源 ,五大数据库产品榜上有名。 2、Oracle发布2020年7月CPU安全预警 奇安信贡献大量漏洞 【摘要】Oracle于今日发布了最新的 CPU 安全预警,CPU 全名是 Critical Patch Update,每个季度发布一次,用于提醒用户那些安全相关的已知漏洞。本次发布共有 27 个和数据库相关的安全漏洞。其中的主要漏洞是和各类组件相关,大多数用户无需关注。其中最核心的一个漏洞是 CVE-2016-9843 是和Core RDBMS (zlib) 相关,只影响到 18c 版本。 3、腾讯Tbase数据库新版本重磅发布:多活能力再上层楼 【摘要】2020年7月13日,腾讯自研的分布式HTAP数据库TBase正式发布了开源V2.1.0版本,作为开源后的首次重大版本升级,TBase开源V2.1.0版本提供了许多令人兴奋的新特性,同时,致力于更大限度地节省系统运行中的资源消耗,此外,TBase面向多中心多活架构的能力也进一步增强了

面向对象设计原则

百般思念 提交于 2020-07-28 12:44:21
设计目标 设计可维护性高,可复用性强的软件。可维护性指的是软件能够被理解、修改、适用及扩展的难易程度,而可复用性指的是软件能够被重复使用的难易程度 设计原则分类 单一职责原则 定义 Single Responsibility Principle(SPR):一个类最好只负责一项事务,只有一个引起它改变的原因。单一职责原则是实现高内聚、低耦合的方式,其关键在于依据需求控制类的 粒度 大小。 案例 设计一个满足用户需求的智能手表,设计厂商设计了如下的智能手表接口 public interface IWatch { public string Cpu { get ; set ; } /// <summary> /// 内存 /// </summary> public string Ram { get ; set ; } /// <summary> /// 显示屏尺寸 /// </summary> public int Size { get ; set ; } /// <summary> /// 计步 /// </summary> /// <returns></returns> int StepCount(); /// <summary> /// 心率 /// </summary> /// <returns></returns> int HeartRate(); /// <summary>

设计模式学习笔记(六):抽象工厂模式

╄→尐↘猪︶ㄣ 提交于 2020-07-27 00:06:57
1 相关术语 在了解抽象工厂模式之前,首先来了解一下两个术语: 产品等级结构 产品族 1.1 产品等级结构 产品等级结构也就是产品的继承结构,例如一个抽象类是电视机,子类有不同品牌的电视机,比如海尔电视机,海信电视机,TCL电视机,而抽象电视机与具体品牌的电视机之间构成了一个产品等级结构,抽象电视机是父类,而具体品牌的电视机是子类。 1.2 产品族 产品族是指由一个同一个工厂产生的位于不同产品等级结构中的一组产品,例如海尔电器工厂生产的海尔电视机,海尔电冰箱。海尔电视机位于电视机产品等级结构中,海尔电冰箱位于电冰箱产品等级结构中,海尔电视机与海尔电冰箱共同构成了一个产品族。 两者示意图如下: 2 抽象工厂模式 抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。 抽象工厂模式又叫Kit模式,是一种对象创建型模式。 结构图如下: 抽象工厂模式包含四个角色: AbstractFactory(抽象工厂):声明了一组用于创建一族产品的方法,每一个方法对应一种产品 ConcreteFactory(具体工厂):实现了在抽象工厂中声明的创建产品的方法,生成一组具体产品,这些产品构成了一个产品族,每一个产品都位于某个产品的等级结构中 AbstractProduct(抽象产品):为每种产品声明接口,在抽象产品中声明了产品所具有的业务方法 ConcreteProduct

oracle经典书籍推荐

跟風遠走 提交于 2020-07-24 12:47:34
很多网友询问如何选择入门书籍,学Oracle有什么好书,这里给出一些常见书籍的介 绍。首先声明,本文只涉及国外作品,因为国内的作品好的极少,大多是拼凑之作。 提到入门学习,我又得搬Tom(Thomas Kyte)出来了。他在Ask Tom和他最新的书里都介绍 了他认为比较好的学习途径和阅读资料。他推荐的资料都是Oracle的官方文档,有个网友 在版上也提出是不是通读文档就可以了。可以肯定地说,如果你通读了文档,记住了其中 的50%,那你已经很牛了,我的有生之年估计不会有可能通读——对于9iR2一共48篇文档 共计46000+页!Tom给出了必读文档和顺序,我简要说明如下: 所有人员 Concepts | New Features _________________|_______________ | | Developer DBA Application Backup & Recovery Dev Guide(Fundamentals) Concepts | | PL/SQL User Guide Recovery Reference & References | | | Performance Administrators' Guide Planning | |_________________________________| | Performance & Tunning

设计模式之美

两盒软妹~` 提交于 2020-05-08 10:29:54
设计模式之美 - 面向对象六大原则 [toc] 设计模式之美目录: https://www.cnblogs.com/binarylei/p/8999236.html 这是设计模式系列开篇的第一篇文章。也是我学习设计模式过程中的总结。这篇文章主要讲的是面向对象设计中,我们应该遵循的六大原则。只有掌握了这些原则,我们才能更好的理解设计模式。 单一职责原则(SRP):一个类应该仅有一个引起他变化的原因。 开闭原则(OCP):对扩展是开放的,但是对修改是关闭的。 里式替换原则(LSP):子类可以去扩展父类的功能,但是不能改变父类原有的功能。 接口隔离原则(ISP):类间的依赖关系应该建立在最小的接口上。 依赖倒置原则(DIP):面向接口编程,而不是具体实现。 迪米特原则(LOD):一个对象应该对其他对象保持最小的了解。 1. 单一职责原则(Single Responsibility Principle) <b>单一职责原则:一个类只负责完成一个职责或者功能。</b>如果一处修改引起了多处功能性质类似的类的变动 ,或者多个类中的代码有重复,可以考虑合并为同一个类。 但实际工作中,评价一个类的职责是否足够单一,很难有一个非常明确的、可以量化的标准,甚至是一件非常主观、仁者见仁智者见智的事情。真正的软件开发中,我们也没必要过于未雨绸缪,过度设计。所以,我们可以先写一个粗粒度的类,满足业务需求

2019年北航OO第二次博客总结

时光怂恿深爱的人放手 提交于 2020-05-04 07:02:09
一、多线程电梯系列作业设计策略 1. 第一次作业——"FAFS傻瓜电梯" 第一次作业是先来先服务的"傻瓜电梯",我当时觉得这个设计未免太简单了,于是就在傻瓜电梯的基础上加上贪心算法,每次都执行电梯内外距离最近的请求(但是没有行进中的捎带)。由于第一次没有限制CPU时间,而且我的wait--notify用得不太熟,因此就采取了暴力轮询的方式。我将我将调度器线程写在了main函数中(这是个很不好的设计,第三次作业中将其改进)作为一个线程,电梯作为一个线程,输入作为一个线程一共三个线程。另外我设计了一个personlist的类以及一个person类,这个类里面有一个属性是flag,flag表示这个人的状态,我规定了三种状态(0:未上电梯1:在电梯内2:在电梯外),这样我就不需要对personlist做remove操作,只需要每次都遍历personlist看它里面所有person对象的状态即可,人上下电梯也就变成了对flag的更改。其中输入线程阻塞式输入,每次输入之后转换为一个person对象加入到personlist中,然后电梯线程不断的轮询:判断是否开门—>开关门—>寻找下一个最近的楼层—>去最近的楼层。在开关门阶段电梯只负责开关门,人上下电梯由调度器负责,电梯开关门是将开关门标志位置为true,然后电梯sleep,这时调度器线程控制人的上下,当输入线程结束后

Java设计模式之三种工厂模式

有些话、适合烂在心里 提交于 2020-05-03 23:09:19
工厂模式实现了创建者和调用者的分离,实现了更好的解耦。 详细分类: 1) 简单工厂模式(静态工厂模式); 2) 工厂方法模式; 3) 抽象工厂模式 面向对象设计的基本原则: 1) OCP( 开闭原则 , Open-Closed Principle) :一个软件的实体应当对扩展开放,对修改关闭。 2) DIP( 依赖倒转原则 ,Dependence Inversion Principle) :要针对接口编程,不要针对实现编程。 3) LoD( 迪米特法则 , Law of Demeter) :只与你直接的朋友通信,而避免和陌生人通信。 一、简单工厂模式(静态工厂模式) 我喜欢吃面条,抽象一个面条基类,(接口也可以),这是产品的抽象类。 1 public abstract class INoodles { 2 /** 3 * 描述每种面条啥样的 4 */ 5 public abstract void desc(); 6 } 先来一份兰州拉面(具体的产品类): 1 public class LzNoodles extends INoodles { 2 @Override 3 public void desc() { 4 System.out.println("兰州拉面 上海的好贵 家里才5 6块钱一碗" ); 5 } 6 } 程序员加班必备也要吃泡面(具体的产品类): 1 public

2017-2018-2 学号20165329 实验二《Java面向对象程序设计》实验报告

耗尽温柔 提交于 2020-05-02 06:06:58
#2017-2018-2 学号20165329 实验二《Java面向对象程序设计》实验报告 ##一、实验内容及步骤 ###(一)单元测试 ####(1)三种代码 举例:我们要在一个MyUtil类中解决一个百分制成绩转成“优、良、中、及格、不及格”五级制成绩的功能。 测试结果: ####(2)TDD(Test Driven Devlopment, 测试驱动开发) TDD的一般步骤: 明确当前要完成的功能,记录成一个测试列表 快速完成编写针对此功能的测试用例 测试代码编译不通过 编写产品代码 测试通过 对代码进行重构,并保证测试通过 循环完成所有功能的开发 基于TDD,我们不会出现过度设计的情况,需求通过测试用例表达出来了,我们的产品代码只要让测试通过就可以了。 TDD的编码节奏: 增加测试代码,JUnit出现红条 修改产品代码 JUnit出现绿条,任务完成 测试结果: ###(二)面向对象三要素 抽象 抽象一词的本意是指人在认识思维活动中对事物表象因素的舍弃和对本质因素的抽取。抽象是人类认识复杂事物和现象时经常使用的思维工具,抽象思维能力在程序设计中非常重要,"去粗取精、化繁为简、由表及里、异中求同"的抽象能力很大程度上决定了程序员的程序设计能力。 抽象就是抽出事物的本质特征而暂时不考虑他们的细节。对于复杂系统问题人们借助分层次抽象的方法进行问题求解;在抽象的最高层

直聘 | 数据库运维岗虚位以待!

☆樱花仙子☆ 提交于 2020-05-01 13:27:54
​ dbaplus直聘 · 第100期 武汉达梦数据库有限公司 公司简介: 武汉达梦数据库有限公司成立于2000年,为国有控股的基础软件企业,专业从事数据库管理系统研发、销售和服务。其前身是华中科技大学数据库与多媒体研究所,是国内最早从事数据库管理系统研发的科研机构。达梦数据库为中国数据库标准委员会组长单位,得到了国家各级政府的强力支持。 运维岗(1人) 岗位职责: dba、ocp。 工作地点: 杭州 福利待遇: 面谈 特殊吸引之处: 政府驻点(外包) 联系人: 胡先生 联系方式: hyc@dameng.com 招聘须知: 投递简历仅限 PDF 格式,邮件标题注明 所应聘城市+职位+ 姓名 。 需求发布: 如果你也想发布招聘信息, 扫描 以下二维码 ,填写申请表。 长按识别二维码 近期直聘: 【第99期】 五一节前来一波优质优岗,赶紧上车吧! 【第98期】 虎牙直播招SRE工程师,这个机会手慢无 【第97期】DBA高薪岗位虚位以待,你确定不看看吗? 【第96期】大数据人才需求不限,碧桂园专场来来啦! 【第95期】金三银四第一弹,财富自由第一站 【第94期】AWS最新数据库相关岗位缺口,跳槽机会来了! 来源: oschina 链接: https://my.oschina.net/u/4392911/blog/4260802