认清Android框架 MVC,MVP和MVVM

  编者按:现在很多时候,我们都是面向搜索(或 Google 或百度)、GitHub 编程,那么,在早期没有互联网的情况下,该如何学习编程,成为一名真正的开发者?亦或是作为一名小白,如何进入互联网编程时代?本文作者分享自己从 0 到 1 的编程成长经历,希望帮助更多的开发者踏出职业生涯的第一步。
  
  640?wx_fmt=png&wxfrom=5&wx_lazy=1
  
  我从 11 岁开始就梦想成为一名黑客,一名真正的黑客,但那时我并没有非常高端的电脑,也没有电影里面出现的那种非常炫酷的双显示屏,甚至没有网络。我的电脑配置仅仅是一个普通的 Core 2 Duo 处理器以及 2 GB 内存,但这并不阻碍我想要成为一名黑客。当时家里有几本关于编程和计算机的书籍,但我几乎翻都没翻。因为我想成为一名黑客,而不是只会敲代码的程序员。
  
  我的黑客之旅启蒙于一本非常糟糕的书。如今你想学习黑客技术,大家通常会推荐《黑客之道-漏洞利用的艺术》(https://en.wikipedia.org/wiki/Hacking:_The_Art_of_Exploitation) 这类的黑客书籍。而我那个时候完全是孤身一人,没有黑客朋友也没有互联网。然而,我通读了整本书,做完了书中的每一个练习,于是我自认为自己对基本的黑客技术了如指掌,但遗憾的是我并没有攻克五角大楼。我甚至错误地认为黑客是无所不能的,应该能够独立开发出不仅功能强大而且外观漂亮的软件,目前看来,我真的太傻了。
  
  那么读了这样一本糟糕的书,我有什么收获呢?在没有互联网和线上资源的情况下,它给我让我对计算机有了一个宏观的理解,基于这样粗略的理解实际上我无法做任何事情。只是让我觉得编程不再那么神秘,这些计算机书籍也不再那么令人生畏。
  
  后来再一次,依然没有任何老师和指导的情况下,我拿起一本书继续学习。这一次并不像我想的那么糟糕,学习效果不错。之后我读了更多的书,整夜整夜地学习 C++,一年之后我可以用 C++ 编写出相对不错的程序。接着我又学习了 C#,因为我想开发桌面应用程序。自此我喜欢上了编程,喜欢做一名程序员。
  
  不过需要注意的是,编程需要耗费大量的时间,当你开始创建真正的应用程序时更是如此。那么在没有互联网和老师的指导、只有一台性能很差的电脑的情况下,如何学习编程呢?
  
  方法其实很简单,真的。
  
  选择一门编程语言
  
  每个编程语言都有它自己的优点。选择一个并坚持下去,不断学习直到你真正掌握这门编程语言的精髓。新手常见的错误是,他们总是试图学习尽可能多的编程语言。实际上数量一多久容易导致混乱,缺乏关注度会让自己分心,最后无奈放弃。以下是经常使用的编程语言的简短列表分类:
  
  JavaScript、HTML、CSS 和 PHP —— 用于 Web 开发;
  
  C#、C ++、JAVA、Python —— 用于桌面和移动开发;
  
  C、C ++ 和 Rust —— 用于底层开发;
  
  Swift 和 Objective-C —— 用于 iOS 开发。
  
  0?wx_fmt=jpeg
  
  在过去 20 年的任何一个操作系统上,只要你安装一个浏览器,就可以使用 JavaScript 做做客户端的开发了。如果你在线购买了 Ubuntu 操作系统光盘,或者加入了本地 Linux 用户组,那么它们已经为你安装好了 Python,你可以轻松开始 Python 的开发。
  
  你可以安装一个 C/C++ 开发环境进行 C/C++ 的编程,比如 Dev-C++(http://www.bloodshed.net/devcpp.html)(虽然它已经相当古老了),你可以用库的形式管理。在没有互联网连接的情况下获得其他开发环境可能会困难得多。
  
  你可以将 Python 文档(https://docs.python.org/3.5/download.html)下载到本地离线查看。为 C# 安装 monodoc(http://www.mono-project.com/docs/tools+libraries/tools/monodoc/),但这需要你获取一些未默认安装的软件包。至于 Linux 上的 C 语言编程,可以参考manpages(http://www.mono-project.com/docs/tools+libraries/tools/monodoc/),虽然手册的导航功能做的一般。
  
  边学边做
  
  阅读太多的教程和书籍除了让你感到枯燥乏味之外,对你编程技能的提升效果并不好。
  
  提升编程技能最好的方法是探索,实践和创新。当我转到 C# 时,我就没有借助书籍和教程。学成编程最美好的体验就是动手写代码。如果你选择创造而不是模仿,那么你可以学到很多东西。但是大多数开发人员都是从教程开始,然后阅读几本书,以两年的时间都不会自己动手去写任何应用程序或软件,最终他们都放弃了。你需要给自己动力,动力的最好来源就是动手写代码。
  
  不要盲目追求独一无二的应用程序
  
  当我在开发 Macalifa(现在被称为Bread Player)(https://www.microsoft.com/en-us/store/p/bread-player/9nblggh42srx)时,我的朋友和家人经常问我最近有没有开发一些新的、独一无二的东西。事实上我并没有开发那种独一无二的应用程序。客观来说,几乎所有你能想到的应用程序市面上都已经有了,你需要做的是创造更好的应用程序,而不是独一无二的应用程序。如果你追逐唯一性,那么你可能永远都无法完成一个应用程序。相反,我们应当创建一个对用户有益的应用程序,或者比当前市面上体验更好的应用程序。
  
  幸运的是,这解决了没有网络连接的问题。没有网络连接,你无法下载程序。这意味着你的程序与别人的程序是重复的也影响不大 —— 因为你不能得到你正在复制的其他程序,你创建了一些能够解决你的部分问题的东西。
  
  拥抱开源
  
  说实话这需要互联网,但不要忽视这一点,它将在未来有用。
  
  当我开始开发真正的应用程序时,起初没有想过开源将会如此重要,但是在我将 Bread Player 开源之后不久,我逐渐意识到了开源的威力。你不需要开源一个 Linux 级别的项目,任何一个项目,不管多小都是可以的。
  
  一开始,每个人都想快速简单地赚钱,但恕我直言,早期没有人知道你,也没有人会关心你在做什么。积极投身 GitHub(https://github.com/theweavrs/)、Bitbucket(https://bitbucket.org/) 或任何其他 Git 源码网站,以便人们知道你的存在。这比建立一个网站好,因为它完全免费并且不需要很多时间来维护。
  
  开源是一个社区,所以你可以结识优秀的人,也许可以吸引一些贡献者来参与你的项目,如果你够幸运,甚至有人会聘用你。事实上,开源是最大的开发者社区,如果你愿意,你可以学到很多东西。
  
  0?wx_fmt=jpeg
  
  参与多个项目
  
  我曾经在一个项目上持续了 3 年多,这非常不容易。当你一直投身一个项目且开发工作很饱和时,有时候你会对这个项目感到厌倦。相反,如果同时开发多个项目这有助于保持开发热情,如果你厌倦了其中一个项目,可以转到其他项目。这样,你将永远在前进,能够持续开发应用程序。
  
  然而,同时进行多个项目最大的好处是你的成长速度很快。你有多种观点,多种思路、多种方式来解决问题,最主要的是能够获得很多动力。目前我在同时开发超过 5 个应用程序,为了让用户收益,近期我可能就会发布一个。
  <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/container"
android:orientation="vertical"
tools:context=".ui.view.MainActivity"
android:fitsSystemWindows="true">

<Button
android:text="get"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="get"/>

<Button
android:text="change"
android:www.ccyl178.com/ layout_width="match_parent"
android:www.yitiali.com layout_height="wrap_content"
android:onClick="change"/>

<TextView
android:id="@+id/top_contributor"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:www.2018yulpt.com textSize="30sp"/>

  按自己的思路进行编程
  
  优秀的开发人员用编程来思考和表达。如果你告诉我一个想法,我不会认为这是一个想法,而是将它开发成一个应用程序。一旦你做到用代码思考,用代码说话,那么你就是一名真正的开发者了。
  
  总结
  
  学习编程并不依赖于互联网、指导或者书籍。不要找借口,不要犹豫不决,行动起来!我并不是现代程序员的典范,所以我的建议你可以借鉴,但是自己也需要进行尝试,从错误中学习。记住:这个世界并不需要你,但你可以让它需要你。今天开始行动,明天才会成功。

时间: 2024-10-09 12:50:21

认清Android框架 MVC,MVP和MVVM的相关文章

MVC, MVP, MVVM比较以及区别(上)

原文:MVC, MVP, MVVM比较以及区别(上) MVC, MVP和MVVM都是用来解决界面呈现和逻辑代码分离而出现的模式.以前只是对它们有部分的了解,没有深入的研究过,对于一些里面的概念和区别也是一知半解.现在一边查资料,并结合自己的理解,来谈一下对于这三种模式思想的理解,以及它们的区别.欢迎各位高手拍砖. 阅读目录: 一. MVC, MVP, MVVM诞生的需求? 二. 一段典型的耦合代码 三. MVC模式 3.1 主动MVC 3.2 被动MVC 3.3 Web应用中的MVC框架 3.4

MVC, MVP, MVVM比较以及区别

MVC, MVP和MVVM都是用来解决界面呈现和逻辑代码分离而出现的模式.以前只是对它们有部分的了解,没有深入的研究过,对于一些里面的概念和区别也是一知半解.现在一边查资料,并结合自己的理解,来谈一下对于这三种模式思想的理解,以及它们的区别.欢迎各位高手拍砖. 阅读目录: 一. MVC, MVP, MVVM诞生的需求? 二. 一段典型的耦合代码 三. MVC模式 3.1 主动MVC 3.2 被动MVC 3.3 Web应用中的MVC框架 3.4 MVC总结 一,MVC, MVP, MVVM诞生的需

细说Android框架设计三剑客MVC、MVP和MVVM

最近几年的移动端开发越来越火,功能越来越强大,处理业务越来越复杂,因此对系统扩展性的要求越来越高.而为了更好地进行移动端架构设计,我们最常用的就是MVC和MVP,今天本篇博客就和大家一起聊一聊这两种框架设计. MVC框架 MVC的定义 MVC (Model-View-Controller):M是指逻辑模型,V是指视图模型,C则是控制器.使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式,而C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新,这与<设计模式>

选择恐惧症的福音!教你认清MVC,MVP和MVVM(转:示例挺好,不太赞同画图)

转自:http://zjutkz.net/2016/04/13/%E9%80%89%E6%8B%A9%E6%81%90%E6%83%A7%E7%97%87%E7%9A%84%E7%A6%8F%E9%9F%B3%EF%BC%81%E6%95%99%E4%BD%A0%E8%AE%A4%E6%B8%85MVC%EF%BC%8CMVP%E5%92%8CMVVM/ 选择恐惧症的福音!教你认清MVC,MVP和MVVM 发表于 2016-04-13   |     |   阅读次数 相信大家对MVC,MVP和

Android App的设计架构:MVC,MVP,MVVM与架构经验谈

来源: Android App的设计架构:MVC,MVP,MVVM与架构经验谈 和MVC框架模式一样,Model模型处理数据代码不变在Android的App开发中,很多人经常会头疼于App的架构如何设计: 我的App需要应用这些设计架构吗? MVC,MVP等架构讲的是什么?区别是什么? 本文就来带你分析一下这几个架构的特性,优缺点,以及App架构设计中应该注意的问题. 1.架构设计的目的 通过设计使程序模块化,做到模块内部的高聚合和模块之间的低耦合.这样做的好处是使得程序在开发的过程中,开发人员

Android MVC,MVP,MVVM模式入门——重构登陆注册功能

一  MVC模式: M:model,业务逻辑 V:view,对应布局文件 C:Controllor,对应Activity 项目框架: 代码部分: layout文件(适用于MVC和MVP两个Demo): <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" and

Android 初识 MVC、MVP框架

转载请标明出处: http://blog.csdn.net/airsaid/article/details/51315096 本文出自:周游的博客 前言 MVC MVP 前言 MVC.MVP.MVVP相信大家已经耳熟能详了,作为Android最出名的三个框架,它们的应用是非常的广泛.这篇博客就来简单介绍下其中二种框架.也加强下自己对这方面的了解.由于自己菜鸟一枚,有不对和需要补充的地方欢迎评论~ MVC MVC全名是:Model(模型) View(视图) Controller(控制器) 是软件架

android中MVC,MVP和MVVM三种模式详解析

我们都知道,Android本身就采用了MVC模式,model层数据源层我们就不说了,至于view层即通过xml来体现,而 controller层的角色一般是由activity来担当的.虽然我们项目用到了MVP模式,但是现在人们并没有总结出一种规范,所以MVP模式的写法并不统一,而至于MVVM模式看网上的呼声似乎也是赞同和拍砖的参半,所以对于这几种模式我也不发表意见了,适合自己的才是最好的.下面是我看到的关于这几种模式的几篇文章,整合了一下分享给大家. ----------------------

【框架篇】mvc、mvp、mvvm使用关系总结

MVC MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑.MVC被独特的发展起来用于映射传统的输入.处理和输出功能在一个逻辑的图形化用户界面的结构中. 数据关系 View 接受用户交互请求 View 将请求转交给Controller Controller