面向对象-mixin设计模式的应用(多继承应用场景)
什么是设计模式?
设计模式只是一种开发思想。不是什么固定的格式。
前人的好的思想,我们后人拿过来用!
mixin设计模式:
1.mixin设计迷失可以在不对类的内容的修改前提下,扩展类的功能(添加父类)
2.更加方便的组织和维护不同的组建
3.可以根据开发需要任意调整功能
4.可以避免产生更多的类
缺点:
受继承关系限制,推荐只有两层的继承使用。
1.设计模式-单继承场景
#设计模式-单继承场景
#这样每增加一个水果,都得分别去继承它的父类(方位)(送礼)(去皮)
#水果类
class Fruit:
pass
#=========方位============
#南方水果类
class SouthFruit(Fruit):
pass
#北方水果类
class NorthFruit(Fruit):
pass
#==========送礼=============
''''''
#南方礼物水果
class SouthGiftFruit(SouthFruit):
pass
#南方非礼物水果
class SouthNotgiftFruit(SouthFruit):
pass #北方礼物水果
class NorthGiftFruit(NorthFruit):
pass
#北方非礼物水果
class NorthNotgiftFruit(NorthFruit):
pass #=============去皮============= #==========真是水果==============
#苹果类
class Apple(NorthGiftFruit):
pass
#梨类
class Pear(NorthNotgiftFruit):
pass
#香蕉
class Banana(SouthNotgiftFruit):
pass
#桔子
class Orange(SouthGiftFruit):
pass
2.设计模式-多继承场景
1 # 设计模式-多继承场景
2 # 这样每增加一个水果,只须在它的继承中增加就可以class Apple(Fruit,North,在这里增加父类) #水果类
class Fruit:
pass
#方位
#南方类
class South:
pass
#北方类
class North:
pass
#苹果类
class Apple(Fruit,North):
pass
#梨类
class Pear(Fruit,North):
pass
#香蕉
class Banana(Fruit,South):
pass
#桔子
class Orange(Fruit,South):
pass
面向对象-mixin设计模式的应用(多继承应用场景)的更多相关文章
- mixin设计模式
mixin可以轻松被一个子类或者一组子类继承,目的是函数复用.在js中,我们可以将继承MiXin看作为一种通过扩展收集功能的方式. e.mixin = function(t) { for (var i ...
- javascript面向对象系列第三篇——实现继承的3种形式
× 目录 [1]原型继承 [2]伪类继承 [3]组合继承 前面的话 学习如何创建对象是理解面向对象编程的第一步,第二步是理解继承.本文是javascript面向对象系列第三篇——实现继承的3种形式 [ ...
- (三)Javascript面向对象编程:非构造函数的继承
Javascript面向对象编程:非构造函数的继承 这个系列的第一部分介绍了"封装",第二部分介绍了使用构造函数实现"继承". 今天是最后一个部分,介绍不使 ...
- ES6教程-字符串,函数的参数,了解函数的arguments对象,js面向对象,设计模式-单例模式,解构赋值
前言 主要讲解了ES6对字符串的拓展,包括includes,startsWith和endsWith,另外增加了字符串模板. Start includes()是否包含 startsWith()以什么开头 ...
- C#面向对象三大特性之二:继承
面向对象的三大特性之一的封装,解决了将对同一对象所能操作的所有信息放在一起,实现统一对外调用,实现了同一对象的复用,降低了耦合. 但在实际应用中,有好多对象具有相同或者相似的属性,比如有一个对象 果树 ...
- 黑马程序猿——JAVA面向对象的特性:封装,继承,多态
- ----------android培训.java培训.java学习型技术博客.期待与您交流!------------ ...
- Java学习:面向对象三大特征:封装、继承、多态之封装性
面向对象三大特征:封装.继承.多态. 封装性在Java当中的体现: 方法就是一种封装 关键字private也是一种封装 封装就是将一些细节信息隐藏起来,对于外界不可见. 问题描述:定义Person的年 ...
- Python 入门 之 面向对象的三大特性(封装 / 继承 / 多态)
Python 入门 之 面向对象的三大特性(封装 / 继承 / 多态) 1.面向对象的三大特性: (1)继承 继承是一种创建新类的方式,在Python中,新建的类可以继承一个或多个父类,父类又可以 ...
- 关于JS面向对象、设计模式、以及继承的问题总结
1.对象:JS中万物皆对象,它是一个泛指 类:对象的具体的细分 (物以类聚,人与群分.具有相同属性和方法的实例的一个集合总称) 实例:某一个类别中具体的一个事物 对象是一个抽象的概念,类似于我们的自然 ...
随机推荐
- java会不会出现内存泄露
1 什么是java内存泄露 当java中的对象生命周期已经结束,本应该释放,但是却长时间不能被释放时,也就是说,内存被浪费了,就是内存泄露. 2 java内存泄露的根本原因 长生命周期的对象中持有短生 ...
- throws ? catch checked unchecked
ThrowableClass Error (unchecked) Exception IOException (checked) RuntimeException (unchecked) publi ...
- codeforces 701C C. They Are Everywhere(尺取法)
题目链接: C. They Are Everywhere time limit per test 2 seconds memory limit per test 256 megabytes inp ...
- c++再探string之eager-copy、COW和SSO方案
在牛客网上看到一题字符串拷贝相关的题目,深入挖掘了下才发现原来C++中string的实现还是有好几种优化方法的. 原始题目是这样的: 关于代码输出正确的结果是()(Linux g++ 环境下编译运行) ...
- Learning ReactNative (一) : JavaScript模块基本原理与用法
在使用ReactNative进行开发的时候,我们的工程是模块化进行组织的.在npmjs.com几十万个库中,大部分都是遵循着CommonJS规则的.在ES6中引入了class的概念,从此JavaScr ...
- Lsyncd搭建同步镜像-用Lsyncd实现本地和远程服务器之间实时同步
Lysncd即Live Syncing Daemon,它是开源的数据实时同步工具(后台进程),基于inotify和rsync. lsyncd会密切监测本地服务器上的参照目录,当发现目录下有文件或目录变 ...
- 小程序wx:key中的关键字*this
“保留关键字 *this 代表在 for 循环中的 item 本身,这种表示需要 item 本身是一个唯一的字符串或者数字,如果是对象则不可以 data:{ array:[1,2,3,4,5], ob ...
- JavaScript实现Select选择本周、上周、本季、上季、本年的时间选取
//转自http://blog.csdn.net/xc_young/article/details/16878849,其上季度有错误,已修改 var MrYangUtil = function () ...
- Docker运行MongoDB及Redis及ssh端口映射远程连接
Docker运行MongoDB及Redis及ssh端口映射远程连接 本节内容简介 在本实验里我们将通过完成 MongoDB 和 Redis 两个容器来学习Dockerfile及Docker的运行机制. ...
- [置顶]
谈EXPORT_SYMBOL使用
转自:http://blog.csdn.net/macrossdzh/article/details/4601648 EXPORT_SYMBOL只出现在2.6内核中,在2.4内核默认的非static ...