封装(二)

原 封装(二)

发表于2年前(2013-12-08 18:09)   阅读(
312) | 评论(
1) 
3人收藏此文章, 取消收藏


0

阿里云携手开源中国众包平台发布百万悬赏项目 ?  

摘要 
这回我们来拿整个界面的封装说事

整个界面从封装的角度上来看,其实与某个控件是一样的。

为什么整个界面都要封装呢?

在项目开发过程中,我们往往会碰到一系列相似度比较高的界面,只是内容不同或少部分界面UI不同。这时,我们可以将共性的东西抽出来,封装成界面类。这样的界面类可以在整个项目中被各界面方便的重用,也可以跨项目的重用。最经典的例子就是“设置界面”。

一个界面同样也有输入、输出及特定的完成功能。我们来看看比较常见的列表选择跳转下一个详情界面的例子。

代码较多,这里就不写了。用伪代码来演示


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

//列表界面

展示一个列表

从服务器获取数据,更新数据源

刷新列表显示最新数据

当点击某个列表行的时候,根据列表行的索引值,从数据源里获取对应的数据

创建详情界面

将数据作为参数传递给详情界面

在屏幕上显示详情界面

//详情界面

展示一个详情页面

对外部传递进来的参数进行处理,形成本界面独特的数据源

根据数据源刷新整个界面

上面的伪代码演示了从列表界面切换详情界面的一般过程。

请注意 “将数据作为参数传递给详情界面”这个地方。

同样有两种做法:

1、在列表界面准备好所有数据,传递给详情界面。详情界面用外部传递进来的数据更新界面元素。

2、在列表界面仅下载自身需要的数据,只传递给详情界面一个ID号或一个名字之类的索引值。详情界面根据外部传递进来的索引,自己到服务器去获取需要的数据。

我们来分析一下优缺点:

采用第一种方法,多个界面重用详情界面类。因为上一界面是不同的列表界面,有时甚至不是列表界面,无法获取相应的数据,需要在其他界面代码里访问服务器,下载数据,然后传递给详情界面。增加了其他界面的复杂度。

当详情界面版本升级,所需要的数据发生变化,必须修改所有涉及到的上层界面代码。

这种不方便,在一种情况下达到了极致。这种情况就是“处理推送消息”。

当我们接收到一条推送消息时,需要解析推送过来的消息内容,根据内容跳转到指定的界面。比如收到一条“某某评论了你的某篇文章”。

第一种方法需要在appDelegate里下载那篇文章的详情,然后创建详情界面、传入数据、在界面上显示。当接收的推送种类比较多,不是一种,而是10种,则必须在appDelegate里准备10种不同服务器接口的代码。

第二种方法,仅需要将某个特定ID传递给对应的界面,就不用管了。

由此,我们可以体会到封装的第二条原则:

谁的事情就让它自己来做,不要去做不是自己范围的事情。

封装类提供的对外接口越简单,越少,则通用性和安全性越高。

时间: 2024-11-03 21:09:18

封装(二)的相关文章

RN实战项目网络请求封装(二)

RN实战项目网络请求封装(二) 网络相关学习文档,参考 RN中文网文档 RN中主要是用fetch来完成异步网络请求的,传统的ajax慢慢的会被fetch替代 RN中文网fetch API 案例 fetch('https://mywebsite.com/endpoint/', { method: 'POST', //请求方法 默认get headers: { 'Accept': 'application/json', 'Content-Type': 'application/json', //数据

selenium之多线程启动grid分布式测试框架封装(二)

五.domain类创建 在domain包中创建类:RemoteLanchInfo.java 用来保存启动信息. package com.lingfeng.domain; public class RemoteLanchInfo { private String id; private String name; private String address; public String getId() { return id; } public void setId(String id) { th

Linux组件封装(二) 条件变量Condition的封装

声明代码如下: 1 #ifndef CONDITION_H 2 #define CONDITION_H 3 4 #include <pthread.h> 5 #include "noncopyable.h" 6 7 class MutexLock; 8 9 10 class Condition : NonCopyable 11 { 12 public: 13 Condition(MutexLock &mutex); 14 ~Condition(); 15 16 vo

[官方软件] Easy Sysprep v4.3.29.602 【系统封装部署利器】(2016.01.22)--skyfree大神

[官方软件] Easy Sysprep v4.3.29.602 [系统封装部署利器](2016.01.22) Skyfree 发表于 2016-1-22 13:55:55 https://www.itsk.com/forum.php?mod=viewthread&tid=362766&highlight=Easy%2BSysprep [官方软件] Easy Sysprep v4.3.29.602 [系统封装部署利器](2016.01.22) [Easy Sysprep]概述:Easy Sy

iOS开发——网络编程OC篇&amp;(十二)AFN详解

AFN详解 众所周知,苹果搞的一套框架NSContention发送请求与接收请求的方式十分繁琐.操作起来很不方便.不仅要做区分各种请求设置各种不同的参数,而且还要经常在多线程里操作,同时还要对请求与返回的数据做各种序列化的操作,同时还要考虑请求数据的安全等一堆问题. 一.早前的几个网络框架 1.ASI框架: HTTP终结者.很牛, 但是有BUG, 已经停止更新. 2.MKNetworkKit (印度人写的). 3.AFN一直还在更新. AFNetworking的出现:MAC/iOS设计的一套网络

C++ 中的封装、继承

一.封装 封装就是将抽象得到的数据和行为相结合,幸好曾一个有机的整体,将数据的源代码进行有机的结合,形成类.封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,只需要通过外部接口,特定的访问权限来使用类的成员.封装可以隐藏实现细节,使代码模块化. #include<iostream> using namespace std; class Student { public: void setAge(int _age) { age = _age; } int getAge() { re

Rxjava+ReTrofit+okHttp深入浅出-终极封装四(多文件下载之断点续传)

Rxjava+ReTrofit+okHttp深入浅出-终极封装四(多文件下载之断点续传) 背景 断点续传下载一直是移动开发中必不可少的一项重要的技术,同样的Rxjava和Retrofit的结合让这个技术解决起来更加的灵活,我们完全可以封装一个适合自的下载框架,简单而且安全! 效果 实现 下载和之前的http请求可以相互独立,所以我们单独给download建立一个工程moudel处理 1.创建service接口 和以前一样,先写接口 注意:Streaming是判断是否写入内存的标示,如果小文件可以

Java封装性及属性的封装

一.封装的概念  1.封装性是面向对象思想的三大特征之一. 2.封装就是隐藏实现细节,仅对外提供访问接口. 封装有: 属性的封装,方法的封装,类的封装 ,组件的封装,模块化的封装,系统级封装 二.封装的好处  1.模块化 2.信息隐藏 3.代码重用 4.插件化易于调试 5.具有安全性 三.属性的封装  也叫属性的私有化. 例: 封装之前: class Person{     String name; int age; } 封装之后: class Person{     private Strin

StackExchange.Redis帮助类解决方案RedisRepository封装(基础配置)

本文版权归博客园和作者吴双本人共同所有,转载和爬虫,请注明原文地址.http://www.cnblogs.com/tdws/p/5815735.html 写在前面 这不是教程,分享而已,也欢迎园友们多提建议和指正.关于更多详细介绍,请到github上看Docs,下面附上地址. 关于Redis基础控制它台操作有疑问的,欢迎阅读本人Redis系列命令拾遗分享 http://www.cnblogs.com/tdws/tag/NoSql/ 如今StackService.Redis已经转向商业版本.4.0

紫外线胶加盖板封装智能卡用CPU模块的方法

本发明提供了一种用UV胶加盖板封装智能卡用CPU模块的方法.即在经贴片.焊线后的载带上用国产UV胶在每个器件上涂没一层,将载带上的芯片.金丝及其空隙包封填没,然后再加盖一块厚0.06mm,直径6.5mm的玻璃纤维,经过UV灯的照射,固化成型,起到了保护芯片和金丝的作用,实现电路封装.运用本发明的UV胶加盖板封装工艺的方法后,提高了被封装的CPU模块合格率,与同类技术相比较降低了成本,封装外形稳定,封装厚度一致,并能承受比较高的压力. 1.一种UV胶加盖板封装智能卡用CPU模块方法,其特征在于,所