当前分类 / 软件工程 / 总共7篇

用Kotlin对MVP基本结构实现

之前我有写过一个开源的Java实现的基于MVP架构的开源Android工程基本结构《MVP架构的Android基础框架》

最近在用Kotlin做项目,计划使用MVP架构在开始一个新的项目,来继续聊聊Kotlin中MVP的实现。

参考链接:

MVP架构

复杂的软件必须有清晰合理的架构,否则无法开发和维护。MVC(Model-View-Controller)是最常见的软件架构之一,业界有着广泛应用。

MVC架构

MVC中所有通信都是单向的。

  1. View 传送指令到 Controller
  2. Controller 完成业务逻辑后,要求 Model 改变状态
  3. Model 将新的数据发送到 View,用户得到反馈

MVP 模式将 Controller 改名为 Presenter,同时改变了通信方向,MVP 非常重要的一点是基于测试,P 层不应该有任何 android sdk 的代码,mock M 和 V 层后,可以脱离 android 直接对 P 层进行 Java Test。

阅读更多

UML类图

参考链接: 《看懂UML类图和时序图》

什么是UML

面向对象的本质是抽象,当系统达到了超越其处理能力的程度,我们可以抽象出我们能够处理的范围来提成抽象级别,这样就可以构建更大、更复杂的系统。

现实世界和对象世界之间存在着一道沟壑,这道沟壑的名字叫抽象,抽象是面向对象的精髓所在,同时也是面向对象的困难所在。要跨越这道沟壑,我们需要解决以下问题:

  1. 一种把现实世界映射到对象世界的方法。
  2. 一种从对象世界描述现实世界的方法。
  3. 一种验证对象世界行为是否正确反映了现实世界的方法。

UML正是解决这一问题的分析设计方法。

当面向对象遇到这些问题的时候,UML统一建模语言出现了。学习UML只是学会了一门语言,而要写出一篇精彩的文章,却需要依靠写作人对生活的感悟和升华,这两者缺一不可。因此比学会UML建模本身更重要的是要理解UML背后所影藏的最佳实践。

阅读更多

MVP架构的Android基础框架

说明

这是我开源的一个基于MVP架构的Android开发基础框架,源码开放在gitlab上。

仓库地址:https://gitlab.com/lxqxsyu/TestKotlin

框架介绍

MVP架构,Retrofit+Rxjava+Okhttp网络请求,可切换Glide和Fresco图片框架,封装基础刷新分页加载,部分功能后期会有所改进。

框架整体结构

框架整体结构

阅读更多

六大设计原则浅析

设计在软件开发中的重要性

重要性

在上大学的时候我们总是不理解为什么要讲这么理论性的东西,当时就一个感觉就是没什么用,我们更想去学习一些可以看到结果的东西,当你毕业之后就会发现基础的知识是多么重要,而这些知识都有一个共性就是可以脱离具体的技术或者问题而存在,是一种可以长期指导我们学习和进步的重要思想,设计原则和模式就是软件开发中的这种思想。

设计原则

我们先来思考一个问题:

怎么样的软件才算一个好的软件或者说对于程序员我们如何评价他(她)的编码技术?

我们来假设一个项目是由某个程序员独立去完成的,他做的事情不仅仅编码这么简单,编写实现功能的代码只占整个项目的30%都不到,他首先做的就应该是对整个项目的技术选择和框架设计(需求的学习和理解暂且不考虑),接下来才是正式编写代码,在实现过程中又需要多次的测试和修改(重构),这样就够了吗?如果能做到这些是可以开发出一个完整的软件,但是还不够。软件工程和盖房子有所区别的地方就在这里,房子盖好就不需要拆了重盖了,软件开发中我们还需要考虑到日后的迭代和变更,所以我们要做到整个结构有一个好的可维护性,设计原则是什么?设计原则就是指导我们实现这种结构的理论基础(也可以说是思想)。

阅读更多

设计模式(2)结构型模式

结构型模式 桥接模式 将抽象和实现耦合,使得两者可以独立的变化。 interface Implementor{ void doSomething(); void doAnything(); } class ConcreteImplementor1 implements Implementor{ public void doSomething(){ //具体业务处理 } public void doAnything(){ //具体业务处理 } } abstract class Abstraction{ private Implementor imp; public Abstraction(Implementor _imp){ imp = _imp; } //自身的行为和属性 public void request(){ imp.doSomething(); } public Implementor getImp(){ return imp; } } class RefinedAbstraction extends Abstraction{ public RefinedAbstraction(Implementor _imp){ super(_imp); } @Override public void request(){ super.request(); super.getImp().doAnything(); } } class Client{ public static void main(String[] args){ //定义一个实现化角色 Implementor imp = new ConcreteImplementor1(); //定义一个抽象化角色 Abstraction abs = new RefinedAbstraction(imp); abs.

阅读更多

设计模式(1)创建型模式

总体来说设计模式分为三大类:创建型模式、结构型模式、行为型模式。

创建型模式

简单工厂模式

工厂类是整个模式的关键。它包含必要的判断逻辑,能够根据外界给定的信息知道创建那个类的实例,外部无需了解该对象是如何被创建和组织的。有利于软件体系结构化。由于工厂类集中了所有实例的创建逻辑,简单工厂模式的缺点也体现在工厂类上。

//Factory类

if( arg == "A" ){
	return new FrescoLoader();
}else if( arg == "B" ){
	return new GlideLoader();
}

可以明显的看到简单工程模式违反了开放-封闭原则(OCP)

阅读更多