1. 对象不在rep里

Dependecy 依赖

在方法参数或者局部变量中

class Duck
{
//no field to keep Flyable objectvoid fly(Flyable f) {f.fly();}
}

2.对象在rep中

2.1 在rep中初始化:Composition 组合

class Duck {Flyable f = new FlyWithWings();void fly() {f.fly();}
}

2.2 在外部传参初始化:Aggregation 聚合

class Duck {Flyable f;void Duck(Flyable f) { this.f = f; }void setFlyBehavior(f) {this.f = f;}void fly() { f.fly();}
}

2.3 在rep中初始化,在构造其中传参可修改

class Duck {Flyable f = new CannotFly();void Duck(Flyable f) { this.f = f; }void Duck() {f = new FlyWithWings();}void fly() { f.fly(); }
}

3. CRP (Composite Reuse Principle)

Delegation 委托相关推荐

  1. iOS中常见的设计模式(MVC/单例/委托/观察者)

    关于设计模式这个问题,在网上也找过一些资料,下面是我自己总结的,分享给大家 如果你刚接触设计模式,我们有好消息告诉你!首先,多亏了Cocoa的构建方式,你已经使用了许多的设计模式以及被鼓励的最佳实践. ...

  2. delegation java_SQL Server配置delegation实现double-hop

    参考文献 前言 在上一篇博客SQL Kerberos的原理及实验中讲到了windows验证的两种模式分别是NTLM和Kerberos,那么他们有何区别,在功能上又有何不同. NTLM是一种比较简单的方 ...

  3. C++面向对象(四)Inheritance, Composition, Delegation

    C++面向对象(四)Composition, Delegation, Inheritance 一.Composition(复合) - 关系表示为:has-a - 其构造和析构的关系 二.Delegat ...

  4. C++面向对象程序设计_Part2

    目录 Composition(复合) 内存视角下的composition(复合) composition(复合)关系下的构造与析构 Delegation (委託) -- Composition by ...

  5. 如何设计复用性较好的类?

    代码复用的几个级别: 源代码级别的复用 模块级别的复用(类/抽象类/接口) 库级别的复用(API) 系统级别的复用:框架 白盒复用:源代码可见.可扩展.可修改 黑盒复用:源代码不可见,只可调用API ...

  6. 通过例子学Solidity[注释翻译]

    [官方译文(2)] 通过例子学Solidity[注释翻译] 前 继续翻译Solidity的官方文档, 以此也算是自己的学习[Solidity官方手册](https://solidity.readthe ...

  7. IOS设计模式之二(门面模式,装饰器模式)

    本文原文请见:http://www.raywenderlich.com/46988/ios-design-patterns. 由 @krq_tiger(http://weibo.com/xmuzyq) ...

  8. IT英语2-编程词汇编程英语词汇

    IT英语2-编程词汇编程英语词汇 A2A integration A2A整合  abstract 抽象的  abstract base class (ABC)抽象基类  abstract class ...

  9. 【转】软件开发常用术语

    软件开发技术常用术语 A.I. 人工智能 A2A integration A2A整合 abstract 抽象的 abstract base class (ABC)抽象基类 abstract class ...

最新文章

  1. Linux 帧缓存 数据,linux--帧缓存技术
  2. 《CLR Via C# 第3版》笔记之(十) - 可选参数和可变数量参数
  3. 虚拟化对VMcpu分配的理解
  4. 接口转发和重定向区别(二)
  5. springMVC各种注解及解释和使用
  6. python设置格式模板
  7. 项目管理中风险评价的必要性
  8. ARM 指令集版本和ARM 版本z
  9. dell服务器硬盘锁_服务器十大排行
  10. 今天晴儿和老佛爷又一起上台了
  11. score函数 机器学习_scikit-learn中的cross_val_score函数scoring参数设置
  12. 如何避免 obj1 + obj2 = obj3 错误?
  13. java计算机毕业设计springboot+vue基本微信小程序的医疗耗材管理系统 uniapp
  14. 经纬度 android,android....中国各城市的经纬度,
  15. Egg.js -- 及案列介绍
  16. springboot获取properties文件的配置内容(转载)
  17. html微博登录代码,微博第三方登陆js实现
  18. Spring Cloud Gateway服务网关
  19. java espresso车架_Espresso UI自动化测试框架
  20. Ubuntu下Meshlab无法链接obj文件或者无法打开外挂硬盘的obj文件

热门文章

  1. 基于Qt的代码加速(含Opencv)
  2. C++ 概念笔记(一)-适用于考研复试
  3. Win10系统利用QEMU虚拟飞腾arm架构主机环境
  4. iPhone 12拍照取消自动曝光方法教程
  5. 魔与道java版本_魔与道_JAVA游戏免费版下载_7723手机游戏[www.7723.cn]
  6. Java从代理服务器中获取客户端真实IP的方法
  7. macbook m1 JDK环境与AndResGuard编译遇到的Gradle同步报错
  8. 一分钟生成1000份中国省会城市知识测试卷及答案
  9. 2.2kW直流无刷电机控制器含源码
  10. MFC 将CDC绘图保存为bmp图片