OCP

C++ 面向对象的三大特性和五个原则

╄→гoц情女王★ 提交于 2020-04-29 13:22:17
1 、三大特性: 封装 :就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体。在一个对象内部,某些代码或某些数据可以是私有的,不能被外界访问。通过这种方式,对象对内部数据提供了不同级别的保护,以防止程序中无关的部分意外的改变或错误的使用了对象的私有部分。 继承 :指可以让某个类型的对象获得另一个类型的对象的属性的方法。它支持按级分类的概念。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。 通过继承创建的新类称为“子类”或“派生类”,被继承的类称为“基类”、“父类”或“超类”。继承的过程,就是从一般到特殊的过程。要实现继承,可以通过 “继承”( Inheritance)和“组合”( Composition)来实现。继承概念的实现方式有二类:实现继承与接口继承。 实现继承:是指直接使用基类的属性和方法而无需额外编码的能力; 接口继承:是指仅使用属性和方法的名称、但是子类必须提供实现的能力。 多态 :是指一个类实例的相同方法在不同情形有不同表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口。这意味着,虽然针对不同对象的具体操作不同,但通过一个公共的类,它们(那些操作)可以通过相同的方式予以调用。 C+

深入理解设计模式---系列目录

拥有回忆 提交于 2020-04-28 21:34:04
一、创建型模式 深入理解设计模式(一):单例模式 (Singleton pattern): 确保一个类只有一个实例, 并提供全局访问点. 深入理解设计模式(二):简单工厂模式 (factory method pattern): 实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。 深入理解设计模式(四):工厂方法模式 (factory method pattern): 定义了一个创建对象的接口, 但由子类决定要实例化的类是哪一个. 工厂方法让类把实例化推迟到子类 深入理解设计模式(五):抽象工厂模式 (Abstract factory pattern): 提供一个接口, 用于创建相关或依赖对象的家族, 而不需要指定具体类. 深入理解设计模式(六):原型模式 (prototype pattern): 当创建给定类的实例过程很昂贵或很复杂时, 就使用原形模式. 深入理解设计模式(七):建造者模式 (Builder pattern): 使用生成器模式封装一个产品的构造过程, 并允许按步骤构造. 将一个复杂对象的构建与它的表示分离, 使得同样的构建过程可以创建不同的表示 二、行为型模式 深入理解设计模式(三):策略模式 (strategy pattern) : 定义了算法族, 分别封闭起来, 让它们之间可以互相替换,

SOLID原则(OOD&OOP)

一世执手 提交于 2020-04-28 11:26:06
SOLID原则是面向对象编程和面向对象设计的头五大原则。学习及应用这五大原则可以构建一个易于维护和扩展的应用程序,我们一起看看到底是那五大原则。 S--单一责任原则(SRP) --Single Responsibility Principle O--开放封闭原则(OCP)-- Open-Closed Principle L--里式替换原则(LSP)-- Liskov Substitution Principle I –- 接口分离原则(ISP)--Interface Segregation Principle D–-依赖倒置原则(DIP)-- Dependency Inversion Principle 一、 单一责任原则(SRP) 单一责任原则指出当需要修改某个类的时候原因有且只有一个。也就是说一个类应该只负责一件事情。 当这个类需要去做其他的事情的时候,就需要分解这个类。如果把多个功能放在一个类中要它负责, 那么各个功能之间会形成关联,改变其中一个功能可能会牵连其他的功能的改变,这样有需要花费时间和人力对其他功能的改变进行测试,保证其他功能的完整。 Ex: 一个有关长方形的类,长、宽、面积。后来需要增加正方形,就继续使用长方形的类,使用的时候长=宽。这一种情况违背了SRP原则,一个类只负责一件事情,这个时候应该新建一个正方形的类。 二、 开放封闭原则(OCP)

架构设计的五大原则-SOLID

两盒软妹~` 提交于 2020-04-28 10:37:14
1.背景 最近在读《架构整洁之道》这一本书,这本书的确写得不错,最近也没有更新文章,一方面再忙工作,另一方面也再啃一些书。当然文章还是得更新,《架构整洁之道》里面有些有意思的内容我会提取出来外加自己的思考。在这本书里面的第三章介绍了设计原则,这部分我觉得对于大家的平时工作都比较有用。 2. 设计原则 想必大家在学习面向对象的时候,都学习过下面几大原则: SRP 单一职责:该设计原则是基于康威定律的推论,每个软件模块有且只有一个被更改的理由。 OCP 开闭原则:对扩展开放,对修改关闭。 LSP 里氏替换原则:任何基类可以出现的地方,子类一定可以出现。 ISP 接口隔离原则:在设计中需要避免不需要的依赖。 DIP 依赖反转原则:高层策略性代码不应该依赖底层细节的代码,而应该是底层细节代码依赖高层策略。 这五个原则也被称为,SOLID原则取的是他们的首字母。这个也是我们做一个好设计的基础,接下来会依次对其进行解释。 3.SRP:单一职责 SRP很容易被大家从字面意思无界,并不是每个模块只做一个事,而是每个模块的变化原因只有一个。在书中对于SRP最后的解释是: 任何一个软件模块都应该只对某一类行为者(有共同需求的人)负责。 这里的软件模块指的就是一个源代码文件或者一组紧密相关的函数和数据结构。SRP原则应该是大家运用得最多的原则之一。在书中举了一个例子

Java设计模式的七大原则

橙三吉。 提交于 2020-04-23 03:23:16
设计原则名称 定 义 使用频率 单一职责原则(Single Responsibility Principle, SRP) 一个类只负责一个功能领域中的相应职责。 ★★★★☆ 开闭原则(Open-Closed Principle, OCP) 软件实体应对扩展开放,而对修改关闭。 开闭原则的关键在于抽象化 。 ★★★★★ 里氏代换原则(Liskov Substitution Principle, LSP) 所有引用基类对象的地方能够透明地使用其子类的对象【子类不应该覆盖父类的非抽象方法】。 里氏代换原则是实现开闭原则的重要方式之一 ★★★★★ 依赖倒转原则(Dependence Inversion Principle, DIP) 抽象不应该依赖于细节,细节应该依赖于抽象。 是开闭原则的基础。【可以通过依赖注入的方式实现】 ★★★★★ 接口隔离原则(Interface Segregation Principle, ISP) 使用多个专门的接口,而不使用单一的总接口。 【需要把控好接口的粒度】 ★★☆☆☆ 合成复用原则(Composite Reuse Principle, CRP) 复用时要尽量使用组合/聚合关系(关联关系),少用继承。 ★★★★☆ 迪米特法则(最少知道)(Law of Demeter, LoD) 一个软件实体应当尽可能少地与其他实体发生相互作用。 ★★★☆☆ 里氏代换原则

dnsmasq 动态加载/etc/hosts

末鹿安然 提交于 2020-04-21 16:18:51
在OCP或K8中,新添加到/etc/hosts中的解析,在不重启dnsmasq的时候,是无法正常解析的,导致pod、宿主机、或者别的应用都无法解析到新添加的域名,可以重启重启dnsmasq或者更优雅的方式kill -1 dnsmasqPid重新加载缓存。 kill -1 netstat -ntpl | awk -F '[/ ]*' '/dnsmasq/ {print $7}' | uniq 来源: oschina 链接: https://my.oschina.net/u/4349287/blog/3288294

Java进阶篇设计模式之十二 ---- 备忘录模式和状态模式

◇◆丶佛笑我妖孽 提交于 2020-04-21 02:07:19
前言 在 上一篇 中我们学习了行为型模式的策略模式(Strategy Pattern)和模板模式(Template Pattern)。本篇则来学习下行为型模式的两个模式,备忘录模式(Memento Pattern)和状态模式(Memento Pattern)。 备忘录模式 简介 备忘录模式(Memento Pattern)用于保存一个对象的某个状态,以便在适当的时候恢复对象,该模式属于行为型模式。 其主要目的是在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。 备忘录模式,其主要的的思想就是备份。例如,txt、word等文档的保存,游戏的存档,操作系统的备份,也包括我们经常用的快捷键Ctrl+Z等等。除了以上的这些应用,我们在编程中接触最多的估计就是数据库的事物了,它提供了一种恢复机制,可在出现异常的时候进行还原。 备忘录模式 主要由这三个角色组成,备忘录角色(Memento)、发起人角色(Originator)和负责人(Caretaker)角色。 备忘录(Memento):主要的功能是包含要被恢复的对象的状态。 发起人(Originator):在创建的时候,会在备忘录对象中存储状态。 负责人(Caretaker):主要是负责从备忘录对象中恢复对象的状态。 示例图如下: 我们这里依旧用一个示例来进行说明吧。 我们在玩游戏有的时候,会经常用到一个游戏功能

2020-面向对象设计与构造-第二单元总结

纵饮孤独 提交于 2020-04-17 14:20:24
【推荐阅读】微服务还能火多久?>>> Part 1 多线程间的协同和控制 限于OO博客格式,可以先去看看Part 3中的UML和Sequence Diagram再来看这一节 整体信号通讯 本单元作业,我统一采用了观察者模式(其实是套了观察者模式的皮的四不像,这点接下来会说到),借用了Java提供的Observable和Observer机制来实现。 Java的机制保证了对一个Observable对象,在我将一些Observer对象注册后,每次调用 setChanged() 后再调用 notifyObservers(Object o) 后,所有Observer(其实只有一个总的Scheduler)的 update(Object o) 方法都会被调用。 在我的架构中,Observer只有一个,就是中心的总调度器,会接受: 输入线程的新请求 输入线程的终止信号 电梯线程的电梯空闲状态信号 电梯线程的换成乘客到中转站信号 为了区分不同Observable对象传来的不同信息,我在通知的时候加入了一个Notification类的对象来表明消息内容,该类内容大致如下: public class Notification { public enum NoteType { INPUT, ELEV, TERMINATE, EXARRIVE, NEWELEV } private NoteType type

5V2A电源适配器ic方案

十年热恋 提交于 2020-04-16 18:03:59
【推荐阅读】微服务还能火多久?>>> 5V2A的电源适配器是市场上应用比较多的类型,它支持的功能全面,而且稳定,骊微电子小编向大家推荐一款5V2A电源适配器ic方案:PN8147 电源芯片,方案拥有可恢复短路保护,过载保护,VDD 过压保护,过温保护,外围元件少,是充电器和适配器方案的不二之选! 5V2A电源适配器ic方案PN8147特点: 内置650V高雪崩能力的功率MOSFET Hi-mode(60kHz PWM) Eco-mode(动态PFM) Burst-mode (25kHz间歇工作模式) 改善EMI的频率调制技术 空载待机功耗 < 50 mW @230VAC 软启动技术 内置高压启动电路 内置线电压补偿和斜坡补偿 开放式输出功率 >18W@230VAC 优异全面的保护功能 过温保护(OTP) 过载保护(OLP) 外部电阻可调式周期过流保护(OCP) 过压保护(OVP) CS短路保护 六级能效10W适配器应用方案(PN8147 DIP7) ■ 输出规格:5V/2A  ■ 待机功耗:<100mW ■ 拥有可恢复短路保护,过载保护,VDD 过压保护,过温保护; ■ 平均效率:≥78.70%; 骊微电子科技以电源方案服务中小功率电源厂家,有着5V 1A、5V 2A、12V 2A系列电源方案及5v2a电源适配器方案的开发设计,为广大客户提供优质的普通充、快充

【转帖】SK海力士进军PCIe 4.0 SSD:密度世界第一、轻松32TB

偶尔善良 提交于 2020-04-08 15:06:27
SK海力士进军PCIe 4.0 SSD:密度世界第一、轻松32TB https: // www.cnbeta.com/articles/tech/964713.htm 硬件突飞猛进。。 SK海力士今天正式发布了最新款的企业级SSD PE8000系列,包括PE8010、PE8030、PE8111三款型号,这也是其首款PCIe 4.0 SSD,无论存储密度、容量还是性能都是世界一流的,甚至是超一流的。 PE8010、PE8030都配备了SK海力士自产的96层堆叠4D TLC NAND闪存颗粒,搭配自研主控,最大容量8TB,兼容U.2、U.3接口,其中PE8010面向读取密集型应用,PE8030则为读写混合应用而优化。 性能方面,持续读写速度最高均可达8.3GB/s、3.7GB/s,随机读写速度最高则可达1100K IOPS、320K IOPS。 相比于去年的上代产品,持续读取性能提升103%,随机写入性能提升357%,另外最大功耗为17W。 PE8111则是针对读取密集型负载的超大容量版本,应用了世界第一的128层堆叠4D TLC NAND闪存颗粒,单颗容量1Tb(128GB),相比于上一代的512Gb颗粒只需一半数量的闪存芯片就可以达成同等容量,同样数量闪存芯片则容量轻松翻番。 PE8111现有最大容量为16TB,E1.L接口形态,同时正在开发32TB版本。 它特别针对OCP