1.6 合成复用原则
发表于|更新于|设计模式
|总字数:210|阅读时长:1分钟|浏览量:
1 合成复用原则
概念
合成复用原则:优先使用对象组合,而不是通过继承来达到复用的目的。
根据UML类图关系,合成复用原则指导在软件设计时,优先使用关联、聚合和组合关系,尽量少用泛化(继承)。对象组合可以使系统更加灵活(黑箱复用),降低类与类之间的耦合度,一个类的变化尽可能不影响其他类(父类和子类耦合度高不高?)。如果要使用继承,则需考虑里氏代换原则和依赖倒转原则。继承关系会破坏系统的封装性,会将基类的实现细节暴露给子类(白箱复用),如果基类发生改变,那么子类的实现也不得不改变。
文章作者: Estom
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Estom的博客!
相关推荐

2021-03-08
TensorFlow-code Swig
前端多语言编程环境与后端C++实现系统的通道归功于 Swig 的包装器 TensorFlow使用Bazel的构建工具,在系统编译之前启动Swig的代码生成过程,通过tensorflow.i自动生成了两个适配 (Wrapper)文件: pywrap_tensorflow_internal.py: 负责对接上层 Python 调用; pywrap_tensorflow_internal.cc: 负责对接下层 C API 调用。 pywrap_tensorflow_internal.py 模块被导入时,会加载_pywrap_tensorflow_internal.so动态链接库,它里面包含了所有运行时接口的符号。而pywrap_tensorflow_internal.cc中,则注册了一个函数符号表,实现Python接口和C接口的映射。运行时,就可以通过映射表,找到Python接口在C层的实现了。 https://blog.csdn.net/u013510838/article/details/84103503

2019-09-28
第2章 用户管理
用户管理 useradd passwd userdel usermod chmod chown .bashrc .bash_profile 1 用户管理添加用户,为用户创建相应的帐号和用户目录/home/username; 1$useradd -m username 用户添加之后,设置密码,密码以交互方式创建: 1$passwd username 删除用户 1$userdel -r username 不带选项使用 userdel,只会删除用户。用户的家目录将仍会在/home目录下。要完全的删除用户信息,使用-r选项; 帐号切换 登录帐号为userA用户状态下,切换到userB用户帐号工作: 1$su userB 进入交互模型,输入密码授权进入; 2 用户组管理将用户加入到组默认情况下,添加用户操作也会相应的增加一个同名的组,用户属于同名组; 查看当前用户所属的组: 1$groups 一个用户可以属于多个组,将用户加入到组: 1$usermod -G groupNmame username 变更用户所属的根组(将用户加入到新的组,并从原有的组中除...

2021-03-22
03 Pytorch 实例学习
通过示例学习 PyTorch 1 预热:NumPy 2 PyTorch:张量 3 Autograd 3.1 PyTorch:张量和 Autograd 3.2 PyTorch:定义新的 Autograd 函数 4 nn模块 4.1 PyTorch:nn 4.2 PyTorch:optim 4.3 PyTorch:自定义nn模块 4.4 PyTorch:控制流 + 权重共享 通过示例学习 PyTorchPyTorch 的核心是提供两个主要功能: n 维张量,类似于 NumPy,但可以在 GPU 上运行 用于构建和训练神经网络的自动微分 我们将使用将三阶多项式拟合y = sin(x)的问题作为运行示例。 该网络将具有四个参数,并且将通过使网络输出与实际输出之间的欧几里德距离最小化来进行梯度下降训练,以适应随机数据。 注意 您可以在本页浏览各个示例。 1 预热:NumPy在介绍 PyTorch 之前,我们将首先使用 numpy 实现网络。 Numpy 提供了一个 n 维数组对象,以及许多用于操纵这些数组的函数。 Numpy 是用于科学计算的通用框架。 它对计算图,深度学习或梯...

2020-09-26
lasso_demo
套索演示演示如何使用套索选择一组点并获取所选点的索引。回调用于更改所选点的颜色。 这是一个概念验证实现(尽管它可以按原样使用)。将对API进行一些改进。 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677from matplotlib import colors as mcolors, pathfrom matplotlib.collections import RegularPolyCollectionimport matplotlib.pyplot as pltfrom matplotlib.widgets import Lassoimport numpy as npclass Datum(object): colorin = mcolors.to_rgba("red") colorout = mcolor...

2021-03-09
多维数组和日期
>多维数组的建立 >>对于多维数组来说,同样需要多级索引来定位元素 [html] view plaincopy <body> <?php $cars = array ( array(“Volvo”,33,20), array(“BMW”,17,15), array(“Saab”,5,2), array(“Land Rover”,15,11) ); for ($row = 0; $row < 4; $row++) { echo “<p><b>行数 $row</b></p>“; echo “<ul>“; for ($col = 0; $col < 3; $col++) { echo “<li>“.$cars[$row][$col].”</li>“; } echo “</ul>“; } ?> </body>...

2021-12-24
概述
概述如何在Linux系统下,使用Linux提供的网络接口,实现网络编程
公告
欢迎参观Estom的小屋



