"thumb">
零、前言
[1].每次写Fragment要加载布局,为布局设置内容,挺麻烦的,搞个基类简单封装一下吧
[2].一般封装基类使用模板方法设计模式,基类中做一些常用的不变东西,需要拐点弯的逻辑就弄个抽象方法延迟到子类 Fragment封装.png
一、代码实现
1.使用:EVAFragment继承
public class EVAFragment extends BaseFragment {
@ Override
protected void render(View rootView) {
setTextView(R.id.f_tv_title, "封装Fragment" .Activity
getFragmentManager().beginTransaction().add(R.id.fl_title, new EVAFragment()).commit();
3.封装的基类 /**
* 作者:张风捷特烈
* 时间:2018/8/29 0029:13:46
* 邮箱:1981462002@qq.com
* 说明:Fragment封装类
知识回顾 1.掌握纯代码写pyqt5程序 2.显示提示框tooltip功能 ---- 本节知识视频教程 以下开始文字讲解: 一、代码封装思路 1.分析哪些代码需要封装:需要封装的就是我们对窗体配置的代码 总结强调 1.掌握类的继承Qwidget的基本思想 2.掌握类的功能封面initUI 3.掌握setGeometry函数 4.掌握简单的信号槽的使用 本节知识源码: import sys from PyQt5.
面向对象 Go语言开发者认为:面向对象就是特定类型(结构体)有着自己的方法,利用这个方法完成面向对象编程, 并没有提封装、继承、多态。所以Go语言进行面向对象编程时,重点在于灵活使用方法。 Go语言有着自己对面向对象的理解,它也有着自己的封装、继承、多态。 5.1.封装 实例 //Learn_Go/main.go package main import ( "fmt" ) type People struct { name string age
4,3.0); s.add(4.0, 3.0); } } java内存 java内存包含了: 堆 栈 方法区 寄存器 栈 先进后出 局部变量,方法都在栈中 堆 new出来的对象在堆 封装
selenium.webdriver.common.keys import Keys from AutoUppCxpay.utils.Logger import Logger # 自己封装的 = Logger(logger="BasePage").getlog() class BasePage(object): """ 定义一个页面基类,让所有页面都继承这个类,封装一些常用的页面操作方法到这个类
AI的规模化应用带动了GPU厂商英伟达前所未有的业绩腾飞,那么5G广阔的市场前景,又会给封装产业带来哪些“地壳运动”呢? More than Moore:SiP为5G芯片带来了什么? 不妨从手机发布会的PPT文案上来反向思考一下,SiP到底为5G芯片封装了哪些能力? 比如有业内人士称,如果将毫米波频段和Sub-6GHz频段都集成在5G芯片上,那么80%的芯片都会采用SiP封装。 不过,5G“新基建”的号角也让SiP有了冲锋的动力。最为直观的变化就是,封装产业的“地壳运动”已经开始悄然发生。 封装产业位移:5G时代的“冰山一角” SiP的兴起,到底会给封装产业带来哪些变局? 中国手机厂商在5G产品研发上的快速布局,5G的基础建设与消费市场培育,与封装厂商的地缘亲近和供应链协同效应,未来将有希望发挥更大的作用,令国内封装产业“水涨船高”。
本文主要讲解java封装jar包的过程,一个简单的demo,方便大家入手学习打包jar包。
缺失封装 没有将实现变化封装在抽象和层次结构中时,将导致这种坏味。 表现形式通常如下: 客户程序与其需要的服务变种紧密耦合,每当需要支持新变种或修改既有变种时,都将影响客户程序。 为什么不能缺失封装? 开闭原则(OCP)指出,类型应对扩展开放,对修改关闭。也就是说应该通过扩展(而不是修改)来改变类型的行为。没有在类型或层次结构中封装实现变化时,便违反了OCP。 缺失封装潜在的原因 未意识到关注点会不断变化 没有预测到关注点可能发生变化,进而没有在设计中正确封装这些关注点。 因为变化点混在了一起,没有分别进行封装。 使用桥接模式进行封装: 使用桥接模式,分别封装这两个关注点的变化。现在要引入新内容类型Data和新加密算法TDES,只需要添加两个新类。
缺失封装 没有将实现变化封装在抽象和层次结构中时,将导致这种坏味。 表现形式通常如下: 客户程序与其需要的服务变种紧密耦合,每当需要支持新变种或修改既有变种时,都将影响客户程序。 为什么不能缺失封装? 开闭原则(OCP)指出,类型应对扩展开放,对修改关闭。也就是说应该通过扩展(而不是修改)来改变类型的行为。没有在类型或层次结构中封装实现变化时,便违反了OCP。 缺失封装潜在的原因 未意识到关注点会不断变化 没有预测到关注点可能发生变化,进而没有在设计中正确封装这些关注点。 因为变化点混在了一起,没有分别进行封装。 使用桥接模式进行封装: 使用桥接模式,分别封装这两个关注点的变化。现在要引入新内容类型Data和新加密算法TDES,只需要添加两个新类。
写在前面:我也是拿来主义,看到@老猫-Leo的【Flutter-Dart基于 Dio 的 HTTP 请求工具类】,封装的蛮好,但是由于我用的是flutter3,拿来后做了一些改动。 我把我改动后的封装分享出来,flutter3拿来可用。本文已征得原作者同意,感谢@老猫-Leo的分享。
5. JDBC工具类的抽取 - 封装获取连接、关闭资源 前言 在前面的篇章中,我使用了 Statement 完成 JDBC 增删改查,而且我们可以发现在代码中,存在代码重复的地方,例如:获取数据库连接、关闭资源 所以下面我们可以写一个 JDBC工具类,封装 获取数据库连接、关闭资源 这类的通用方法。 把重复代码抽取到父类, 把公共代码抽取成方法, 把公共代码抽取到工具类 * 原则: 抽取重复的 * 2.选择把公共代码抽取到工具类 * 找重复的: (1,2 -- 获得连接的方法), (5- 获取连接 Connection conn = JdbcUtils.getConnection(); //5.使用 Statement 完成数据插入 //5.1 创建执行sql
面向对象程序设计最主要的有三个特征:封装、继承、多态 本节内容主要讲解面向对象的第一个特征:封装 1 封装的意义 在我们程序开发过程中,定义好类型之后就可以通过类型来创建对象 如:我们定义一个中华人民共和国公民的类型 封装,就是将对象敏感的数据封装在类的内部,不让外界直接访问,但是提供了让外界可以间接访问的set/get方法,我们可以在set/get方法中添加数据的访问限制逻辑,完善我们的代码,提高程序的健壮性 # 封装以后通过函数操作的方式 p.set_name("tom") print(p.get_name()) # 封装以前通过属性直接操作的方式 p.name = "tom" print(p.name) 封装的注解方式,在一定程度上,能隐藏我们方法在底层的实现,让调用者的操作变得简单。 但是同时也降低了代码的可读性,后续的操作中,我们还是遵循原来封装的操作方案将类的属性私有化,提供set/get方法进行属性的操作。 ----
前言 在面向对象编程(OOP)中,封装是一个重要的概念,旨在保护数据并限制对对象内部状态的直接访问。在 Python 中,私有成员是实现封装的关键工具。 本章详细讲解了封装的基本概念以及私有成员的用法。 本篇文章参考:黑马程序员 一、基本概念 面向对象编程是一种许多编程语言支持的编程思想。 面向对象的三大特性: 封装 继承 多态 封装:将现实世界的事物用类来描述,具体表现为属性和方法。 通俗来讲,封装就是将事物的属性和行为整合到一个类中,通过成员变量和成员方法来实现对现实世界事物的描述。 : 5G通话已开启 【例题】 设计一个手机类,内部包含: ①私有成员变量:__is_5g_enable,类型为bool,True表示开启5g,False表示关闭5g; ②私有成员方法:check_5g( __check_5g(),判断5g网络状态,打印输出“正在通话中”。
36 // 在这里将p对象中的年龄赋值为-25岁 37 p.setAge(-25) ; 38 // 调用Person类中的talk()方法 39 p.talk() ; 40 } 41 } 封装属性 :private 属性类型 属性名 封装方法:private 方法返回类型 方法名称(参数) 01 class Person 02 { 03 private String name ; 04 private name ; 25 } 26 public int getAge() 27 { 28 return age ; 29 } 30 } 31 32 public class TestPersonDemo5
专业的人专业造轮子,将橡胶、钢材等原材料封装成成品车轮,供给他人使用。 这就是封装的法则,人们通过封装,将现实世界繁复复杂的事物简化为抽象世界的一个概念,并且在概念之上层层运用封装法则,实现无与伦比的意念世界的上层建筑。
未利用封装 客户代码使用显式类型检查(使用一系列if-else或switch语句检查对象的类型),而不利用出层次结构内已封装的类型变化时,将导致这种坏味。 为什么要利用封装? 我们这里讨论的是:要检查的类型都封装在了层次结构中,但没有利用这一点,即使用显式类型检查,而不依赖于动态多态性。这将导致如下问题: 显式类型检查让客户程序和具体类型紧密耦合,降低了设计的可维护性。 未利用封装潜在的原因 以过程型思维使用面向对象语言 开发时的思维是以代码执行过程为导向,自然而然就会使用if-else语句和switch语句。 未应用面向对象原则 无力将面向对象的概念付诸实践。 public const int TYPE_FLOAT = 3; public const int TYPE_INT = 4; public const int TYPE_USHORT = 5; 这种情况反映出来的问题就是没有利用封装,已经有了层次结构,却没有予以利用。没有面向接口编程,每个地方面向的都是具体的实现类,每个地方都需要判断实例的类型才可以进行下一步的动作。
泄露的封装 抽象通过公有接口(方法)暴露或泄露实现细节时,将导致这种坏味。需要注意的是,即使抽象不存在“不充分的封装”坏味,其公有接口也有可能泄露实现细节。 为什么不能泄露封装? 为实现有效封装,必须将抽象的接口(即抽象的内容)和实现(即抽象的方式)分离。为遵循隐藏原则,必须对客户程序隐藏抽象的实现方面。 泄露的封装的潜在原因 不知道该隐藏哪些东西 开发人员通常会在无意之间泄露实现细节。 使用细粒度接口 类的公有接口直接提供了细粒度的方法,这些细粒度的方法通常会向客户程序暴露不必要的实现细节。 这就是泄露的封装的潜在原因——使用细粒度接口。
而是由下层逐层封装来完成对等层交换数据,这就是我们数据的封装。 而解封装,就是上层需要与下层进行通信,于是逐层解封装至目标层进行通信。 这里的上下层就是指的网络参考模型的层次 上面可能说的有点复杂不易于理解,可以记住下面这句话: 数据发送时,从上至下逐层封装 数据接收时,从下至上逐层解封装 只有拆除外层封装,才能看到内层封装 TCP/IP 五层模型对应每层格式 所遵循的层次 数据封装的流程 封装与解封装流程 1.数据从应用层发出,进入传输层 在传输层会为我们数据打上TCP or UDP头部,里面包含了我们数据的源端口、目的端口,到这层的时候 ,我们数据已经被封装成了数据段。 注意,数据的封装、解封装都是逐层进行的,不会出现跃层通信 数据的解封装 同封装原理一样,只不过顺序进行了颠倒,从物理层的二进制数据流开始逐层解封装直至应用层 小节 本篇了解了我们数据封装与解封装的流程,
泄露的封装 抽象通过公有接口(方法)暴露或泄露实现细节时,将导致这种坏味。需要注意的是,即使抽象不存在“不充分的封装”坏味,其公有接口也有可能泄露实现细节。 为什么不能泄露封装? 为实现有效封装,必须将抽象的接口(即抽象的内容)和实现(即抽象的方式)分离。为遵循隐藏原则,必须对客户程序隐藏抽象的实现方面。 ##泄露的封装的潜在原因 不知道该隐藏哪些东西 开发人员通常会在无意之间泄露实现细节。 使用细粒度接口 类的公有接口直接提供了细粒度的方法,这些细粒度的方法通常会向客户程序暴露不必要的实现细节。 这就是泄露的封装的潜在原因——使用细粒度接口。