一些面向对象的设计法则(2)

常用设计模式之白话精简理解及应用-上 Python微信订餐小程序课程视频 https://edu.youkuaiyun.com/course/detail/36074 Python实战量化交易理财系统 https://edu.youkuaiyun.com/course/detail/35475 前置条件 基础知识 学习设计模式之前我们需要具备一些基础知识,首先需要熟悉面向对象软件开发经历的三个阶段,即OOA(面向对象分析)、OOD(面向对象设计)、OOP(面向对象编程)。 OOP中有两个最基础概念是类和对象,还有封装、继承、多态、抽象四大面向对象编程的特性。 OOA 阅读详情
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

法则2:针对接口编程,而非(接口的)实现
[ Program To An Interface, Not An Implementation ]

  • 接口

    1.接口是一个对象在对其它的对象进行调用时所知道的方法集合。
    2.一个对象可以有多个接口(实际上,接口是对象所有方法的一个子集)
    3.类型是对象的一个特定的接口。
    4.不同的对象可以具有相同的类型,而且一个对象可以具有多个不同的类型。
    5.一个对象仅能通过其接口才会被其它对象所了解。
    6.某种意义上,接口是以一种非常局限的方式,将"是一种…"表达为"一种支持该接口的…"。
    7.接口是实现插件化(pluggability)的关键

  • 实现继承和接口继承

    1.实现继承(类继承):一个对象的实现是根据另一个对象的实现来定义的。
    2.接口继承(子类型化):描述了一个对象可在什么时候被用来替代另一个对象。
    3.C 的继承机制既指类继承,又指接口继承。
    4.C 通过继承纯虚类来实现接口继承。
    5.Java对接口继承具有单独的语言构造方式-Java接口。
    6.Java接口构造方式更加易于表达和实现那些专注于对象接口的设计。

  • 接口的好处

    1.优点:
    a.Client不必知道其使用对象的具体所属类。
    b.一个对象可以很容易地被(实现了相同接口的)的另一个对象所替换。
    c.对象间的连接不必硬绑定(hardwire)到一个具体类的对象上,因此增加了灵活性。
    e.松散藕合(loosens coupling)。
    f.增加了重用的可能性。
    e.提高了(对象)组合的机率,因为被包含对象可以是任何实现了一个指定接口的类。
    2.缺点:
    a.设计的复杂性略有增加
    (译者注:接口表示"…像…"(LikeA)的关系,继承表示"…是…"(IsA)的关系,组合表示"…有…"(HasA)的关系。)

  • 接口实例

该方法是指其它的一些类可以进行交通工具的驾驶,而不必关心其实际上是(汽车,轮船,潜艇或是其它任何实现了IManeuverabre的对象)。

一些面向对象的设计法则:(Bob Tarr 著,outmyth 译)

法则1:优先使用(对象)组合,而非(类)继承
法则2:针对接口编程,而非(接口的)实现
法则3:开放-封闭法则(OCP)
法则4:Liskov替换法则(LSP)

在树莓派4B上基于NCNN框架部署YOLOv8的实战教程 摘要:本文详细介绍了在树莓派4B上基于NCNN框架部署YOLOv8目标检测模型的完整流程。从PyTorch模型转换为NCNN格式,到树莓派环境配置(OpenCV和NCNN编译),再到C++代码实现与优化,涵盖模型加载、推理和绘图等核心功能。测试结果显示,树莓派4B上可实现约2 FPS的检测速度,Windows平台达6~7 FPS。文章还提供了量化模型、多线程优化等实用建议,并附常见问题解答,为边缘设备部署轻量化目标检测提供了可行方案。(149字) 阅读详情

相关推荐

【SoloPi】SoloPi使用2-功能使用,录制回放

Soloπ是什么 Soloπ是一个无线化、非侵入式的Android自动化工具,公测版拥有录制回放、性能测试、一机多控三项主要功能,能为测试开发人员节省宝贵时间。 录制回放功能 Soloπ拥有录制操作的能力,用户只需要通过Soloπ执行用例步骤,Soloπ就能够将用户的操作记录下来,并且支持在各个设备上进行回放,这一切都能够在手机上独立完成。 ...

q_Catherine的博客 5829

基于接口而非实现编程,你真的理解了吗

“基于接口而非实现编程”这条原则的英文描述是:“Program to an interface, not an implementation”。我们理解这条原则的时候,千万不要一开始就与具体的编程语言挂钩,局限在编程语言的“接口”语法中(比如Java中的 interface)。这条原则是一条比较抽象、泛化的设计思想。实际上,理解这条原则的关键,就是理解其中的“接口”两个字,这里的“接口”是泛指,可以理解为“抽象”。

Hopefully Sky的博客 3150

ADS入门学习笔记——低噪声放大器(2)

1、输入匹配网络; 2、输出匹配网络;

weixin_42126696的博客 4991

第六章学习总结

1.为了克服Java单继承的缺点,Java使用了接口,一个类可以实现多个接口。使用关键字interface来定义一个接口。接口的定义和类的定义很相似,分为接口的声明和接口体。 接口声明: –接口通过使用关键字interface来声明 –格式:interface 接口的名字 接口体: 接口体中包含常量定义和方法定义两部分。接口体中只进行方法的声明,不许提供方法的实现,所以,方法的定义没有方...

wolaozhou0617的博客 376

使用Avalonia跨Linux平台

Avalonia类似使用WPF的技术方法来开发,所以,需要会使用WPF,其中的一些语法和写法与WPF有所区别,但是他们相差不大,会WPF的话,基本上可以看看文档后,完全掌握Avalonia的使用,从而达到跨平台开发的任务。其实写法有些不一样,可以参考官网的说明,进行修改。2. 安装完成后,重启VS2022,我们可以看到1和2,其中1是使用MVVM模式开发,2是普通模式开发,我们选择2,建立项目。9.直接双击粉红色的文件,进行安装,输入密码,但是美中不足的是,好像没有图标,图标似乎需要单独去设置。

故里2130 1万+

glm-4v-9b环境配置全攻略:从CUDA版本冲突到bitsandbytes异常排查(RTX A4000实测)

本文详细介绍了在RTX A4000显卡上配置GLM-4V-9B多模态大模型的完整流程,重点解决CUDA版本冲突和bitsandbytes异常问题。通过4-bit量化技术显著降低显存占用,提供从环境预检到量化部署的实战指南,帮助开发者在有限显存环境下高效运行大模型。

weixin_30369041的博客 407

【设计模式】设计原则--面向接口编程你理解的对吗?

【设计模式】设计原则--面向接口编程你理解的对吗?开始封装变化面向接口而不是实现编程优先考虑组成而不是继承示例代码参考 点此查看原文 最近看了《Head First Design Patterns》这本书。正如其名,这本书讲的是设计模式(Design Patterns),而这本书的第一章,讲的是很重要的一些设计原则(Design Principles)。 Identify the aspe...

VoldemortChi的博客 649

RabbitMQ高级特性 - 生产者消息确认机制

为了保证信息 从生产者 发送到 队列,因此引入了生产者的消息确认机制.通过事务机制实现.通过发送确认机制(confirm 和 return)实现.因为事务机制比较消耗性能,在实际工作中用的也不多,因此这里主要介绍confirm 和 return机制来实现发送放的确认.a)confirm 确认模式如上图,confirm 确认模式主要保障于 生产者 到 交换机 的消息可靠性.如果 Exchange成功收到消息,那么 ConfirmCallback 这个回调 ack 参数就为true。

CYK_byte的博客 1886

设计模式(一):Program to an interface/supertype

文章目录问题提出解决如何实现? 本系列是《Head First Design Patterns》读书笔记加之个人理解,如有错误,请纠正。 问题提出 假设你设计了一个简单的展示鸭子的app。 设计了一个父类Duck,其他各种类型的鸭子都继承这个父类。 但是现在有了一个新的需求,鸭子要能够飞。 聪明的你很快的在父类Duck里面添加了fly()这个函数。 但是问题来了,在演示的时候发现有一个继承Duck...

铁锹的填坑记录 311

一文搞定离线环境下的RAG引擎部署

在人工智能浪潮下,技术已成为构建智能问答、文档分析和代码助手等应用的核心。然而,在许多企业场景中,出于数据安全和性能的考虑,服务器往往部署在中,并要求极致的推理效率。这给依赖外部资源的应用部署带来了巨大挑战。如何在这种严苛的环境下,完整、可靠地部署一套包含向量数据库、**高性能推理服务(vLLM)**和Python后台的复杂RAG系统呢?本文将为你提供一个,手把手教你如何使用 Docker 技术,将一套基于 Weaviate 和的 Python RAG 应用完整打包,并在离线环境中一键部署。

木鱼时刻的专栏 1242

AUTOSAE软件配置-项目标准配置 (PSC) 导入达芬奇( DaVinci Configurator)

文件是“可拆分的”,这意味着如果格式符合 AUTOSAR 拆分规则,则可以与其他。)是一个ARXML文件,主要由OEM提供,其中包含。)工件,可以作为输入文件导入到达芬奇配置器专业版。导入的参数将以只读方式处理。不允许在多个 ARXML 文件中导入一个。的已存在数据或从输入文件派生的数据。可以作为输入文件导入到另一个。文件会覆盖用户配置的基本。元素和诊断数据预配置。定义 [数据结构]。中,可以导出一个或多个。

m0_49148264的博客 1017

一些面向对象的设计法则 2

法则2:针对接口编程,而非(接口的)实现[ Program To An Interface, Not An Implementation ]接口n         接口是一个对象在对其它的对象进行调用时所知道的方法集合。n         一个对象可以有多个接口(实际上,接口是对象所有方法的一个子集)n         类型是对象的一个特定的接口。n         不同的

『 李天平的博客 』 3454

Ubuntu24.04安装搜狗输入法详细教程

本章教程,介绍如何在Ubuntu24.04版本操作系统上安装搜狗输入法。

猿小白的博客 1万+

第2章 面向对象的设计原则(SOLID):5_迪米特法则

5. 迪米特法则(Law of Demeter,LoD) 5.1 定义 (1)应尽量减少其他对象之间的交互,对象只和自己的朋友交谈,即对其他依赖的类越少越好(不要和太多的类发生关系)。 (2)尽量不要让类和类之间建立直接的关系,这样可减少类与类之间的依赖,降低类之间的耦合。 (3)一个类应对自己需要耦合的类知道得最少,只知道其public方法,其内部如何复杂自己没有关系,也叫最少知识原则(...

CherishPrecious的博客 379

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

一些面向对象的设计法则 (2):Favor Composition Over Inheritance

法则1:优先使用(对象)组合,而非(类)继承[ Favor Composition Over Inheritance ] 组合 1.(对象)组合是一种通过创建一个组合了其它对象的对象,从而获得新功能的复用方法。2.将功能委托给所组合的一个对象,从而获得新功能。3.有些时候也称之为"聚合"(aggregation)或"包容"(containment),尽管有些作者

溺水的鱼 - Later equals never. 1799

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

面向对象的设计法则2[Program To An Interface, Not An Implementatio]

法则2:针对接口编程,而非(接口的)实现[ Program To An Interface, Not An Implementatio]接口1.接口是一个对象在对其它的对象进行调用时所知道的方法集合。2.一个对象可以有多个接口(实际上,接口是对象所有方法的一个子集)3.类型是对象

woxiaozhi的专栏 1128

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Bob Tarr:一些面向对象的设计法则 (2):Favor Composition Over Inheritance

法则1:优先使用(对象)组合,而非(类)继承[ Favor Composition Over Inheritance ] 组合 1.(对象)组合是一种通过创建一个组合了其它对象的对象,从而获得新功能的复用方法。 2.将功能委托给所组合的一个对象,从而获得新功能。 3.有些时候也称之为"聚合"(aggregation)或"包容"(c

bookjohn的专栏 802

一些面向对象的设计法则

一些面向对象的设计法则 Bob Tarr 著            outmyth 译     法则1:优先使用(对象)组合,而非(类)继承组合n         (对象)组合是一种通过创建一个组合了其它对象的对象,从而获得新功能的复用方法。n         将功能委托给所组合的一个对象,从而获得新功能。n         有些时候也称之为“聚合”(aggre

ewolf的工作专栏 1059

面向对象设计/编程的四大法则

一些面向对象的设计法则 Bob Tarr 著outmyth 译         法则1:优先使用(对象)组合,而非(类)继承[ Favor Composition Over Inheritance ]组合n         (对象)组合是一种通过创建一个组合了其它对象的对象,从而获得新功能的复用方法。n         将功能委托给所组合的一个对象,从而获得新功能。n         有些时候也称

T.johnny的专栏 922

面向对象的设计法则(2)——针对接口编程,而非(接口的)实现

  接口  1.接口是一个对象在对其它的对象进行调用时所知道的方法集合。  2.一个对象可以有多个接口(实际上,接口是对象所有方法的一个子集)  3.类型是对象的一个特定的接口。  4.不同的对象可以具有相同的类型,而且一个对象可以具有多个不同的类型。  5.一个对象仅能通过其接口才会被其它对象所了解。  6.某种意义上,接口是以一种非常局限的方式,将"是一种…"表达为"一种支持该接口的…"。  

sphinger的专栏 540

第2章 面向对象设计原则(单一职责原则、开闭原则、里氏代换原则、依赖倒转原则、接口隔离原则、合成复用原则、迪米特法则概念)

单一职责原则、开闭原则、里氏代换原则、依赖倒转原则、接口隔离原则、合成复用原则、迪米特法则概念

weixin_51823785的博客 159

设计模式的七大基本原则

客户端不应该依赖于它不需要的接口。一个类不应该强迫它的客户端依赖于它们不需要的方法。这要求我们要使用多个小的专门的接口,而不要使用一个大的接口。这要求我们写出的程序依赖于抽象接口,而不是具体的实现。任何一个父类出现的地方,都可以用它的子类来替代,而不会导致程序的错误或者异常。这个原则鼓励你将复杂系统分解为许多小的、相对独立的模块,模块之间的交互通过最少的接口进行。这意味着你应该通过扩展已有模块实现新的功能,而不是直接修改已有的代码。这个原则推崇对象组合和聚合的方式来构建复杂的对象系统,而不是依赖继承。

qq_38196449的博客 394
上一篇: MVC和Observer
下一篇: 一些面向对象的设计法则(3)
java169
博客等级 码龄19年 27粉丝 2568原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值