前言:

在软件开发上,写代码是<实>,画设计图是<虚>。程序员务实,设计员务虚。由于<干实事>被推崇,所以大多开发者都务实了,不画图做设计了。例如,数十本仿间的中文Android书籍里,除了我的书之外,几乎没有UML图,让年轻一代逐渐失去图形思考习惯,这将损害其创造能力。


高老师陪您成长...


EE                                                  EE

相關文章:

1. 如何设计平台框架的<未来性>

2. 平台框架(Framework)开发的雕龙之技6招

如何绘制平台框架的设计图:使用UML工具

1. 复习:开始使用UML建模工具(如JUDE)

开启JUDE建模工具:

点选<File/New>,创建新建模项目:

建立新的类图(Class Diagram):

类图绘图区:

拉出一个类的图像,并取名为 ”汽车”:

2.  开始设计框架

框架设计练习口诀:目前先”不”做轮胎

老子说:”无” 之以为用(有之以为利)

孔子说:知之为知之,”不”知为不知

最伟大的雕刻师罗丹( Musée Rodin)说:把”不”必要的部分去掉。

~~ 先不做轮胎 ~~

相当于:

[歡迎光臨 高煥堂 網頁: http://www.cnblogs.com/myEIT/ ]

3.  应用框架设计范例

这个Calculator类的范例代码:

// 引擎部份

class Calculator {

public int run() {

int n;

n = getN();

int sum = 0;

for(int i=0; i<=n; i++) {

sum += i;

}

return sum;

}

private int getN() {   return 10;     }

}

//------------------------------------------

public class JMain {

public static void main(String[] args) {

Calculator cal = new Calculator();

System.out.println(cal.run());

}

}

~~ 先不做轮胎(先不加糖) ~~

~~ 先做轮毂(先准备砂糖纸包) ~~

范例代码:

// JMain.java

import Engine.Calculator;

public class JMain {

public static void main(String[] args) {

Calculator cal = new Calculator();

System.out.println(cal.run());

}

}

// 引擎部份

package Engine;

import Framework.ICount;

public class Calculator {

ICount ref;

public int run() {

int n;

n = getN();

int sum = 0;

for(int i=0; i<=n; i++) {

sum += i;

}

return sum;

}

private int getN() {

return ref.getCount();

}

}

// 接口部分

package Framework;

public interface ICount {

int getCount();

}

Java的Interface接口,就相当于纯粹抽象基类(Pure abstract class)。所以,也能将上述ICount接口定义为基类,如下:

abstract class Count {

   public abstract int getCount();

}

也可以定义为一般抽象基类,如下:

abstract class Count {

      public int getCount() {

             int cc = onCount();

             return cc;

}

        protected int onCount();

}

  • 以上是做『分』的动作,将轮胎从汽车上”分” 离开来,或是将糖从三合一咖啡里分离开来。

  • 客人来了,主人询问客人:需要冰糖或砂糖?

  • 依据客人需求,主人开始做『合』的动作,将轮胎组”合”装配到汽车上,或是将糖加入二合一咖啡,调”合”成可口的咖啡。

4. 开始撰写AP子类别

~~ 配上实作类(Implementation Class):

~~ 配上子类(Sub Class):

~~创建子类的对象~~

范例代码:

// JMain.java

import Engine.Calculator;

import Framework.Count;

public class JMain {

public static void main(String[] args) {

Calculator cal = new Calculator();

Count co = new myCount();

cal.setRef(co);

System.out.println(cal.run());

}

}

// 引擎部份

package Engine;

import Framework.Count;

public class Calculator {

private Count ref;

public int run() {

int n;

n = getN();

int sum = 0;

for(int i=0; i<=n; i++) {     sum += i;     }

return sum;

}

private int getN() {    return ref.getCount();     }

public void setRef(Count co){   ref = co;   }

}

//框架部份

package Framework;

public abstract class Count {

public int getCount() {

int cc = onCount();

return cc;

}

protected abstract int onCount();

}

// 子類部份

import Framework.Count;

public class myCount extends Count{

protected int onCount(){   return 10;   }

}

*** 這有一個矛盾的地方:

  • 代碼Count co = new myCount(); 意味著myCount類必須先於JMain類。

  • 但是JMain又屬於框架層,顯然應該先於myCount類。

*** 如果使用Android的myActivity子類來替代JMain類,就解決上述的困境了。

*** 於是共含有兩層框架:Android大框架和DSF小框架,如下圖:

總共含有4大模塊:

  • Android大框架

  • DSF小框架

  • DSE特殊領域引擎

  • AP

范例代码:

// 引擎部份

package DS_Engine;

import DS_Framework.Count;

public class Calculator {

private Count ref;

public int run() {

int n;

n = getN();

int sum = 0;

for(int i=0; i<=n; i++) {    sum += i;    }

return sum;

}

private int getN() {

return ref.getCount();

}

public void setRef(Count co){

ref = co;

}

}

// DSF小框架部份

package DS_Framework;

public abstract class Count {

public int getCount() {

int cc = onCount();

return cc;

}

protected abstract int onCount();

}

// AP部分

// myCount.java

package com.misoo.ppxx;

import DS_Framework.Count;

public class myCount extends Count{

protected int onCount(){   return 10;   }

}

// myActivity.java

package com.misoo.ppxx;

import DS_Engine.Calculator;

import DS_Framework.Count;

import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.LinearLayout;

public class myActivity extends Activity implements OnClickListener {

private Button btn, btn2;

@Override public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

LinearLayout layout = new LinearLayout(this);

layout.setOrientation(LinearLayout.VERTICAL);

LinearLayout.LayoutParams param =

new LinearLayout.LayoutParams(100, 55);

param.leftMargin = 1;  param.topMargin = 3;

btn = new Button(this);

btn.setId(101);  btn.setText("Run");

btn.setOnClickListener(this);   btn.setBackgroundResource(R.drawable.x_jude);

layout.addView(btn, param);

btn2 = new Button(this);   btn2.setId(102);

btn2.setText("Exit");      btn2.setOnClickListener(this);

btn2.setBackgroundResource(R.drawable.x_sky);

layout.addView(btn2, param);

setContentView(layout);

}

public void onClick(View v) {

switch(v.getId()) {

case 101:

Calculator cal = new Calculator();

Count co = new myCount();

cal.setRef(co);

int result = cal.run();

setTitle(String.valueOf(result));

break;

case 102:   finish();   break;

}}

}

EE                                                                  EE

转载于:https://blog.51cto.com/8204129/1354282

如何绘制平台框架的设计图:使用UML工具相关推荐

  1. 如何设计平台框架的未来性

    前言: 过去19年来,我(高煥堂)个人在海峡两岸.日本.美国和西班牙等国担任大型框架系统设计的实务经验中,发现到许多框架开发者摆脱不了「AP开发者」的观点:把买主和用户视为「大员外」,而开发者变成员外 ...

  2. 火影推荐程序连载23-Robot Framework自动化测试框架核心指南-如何做好自动化测试平台框架的设计

    自动化测试如果需要能高效快速的支撑软件项目的测试,项目的快速迭代以及上线,除了以上我们介绍的需要许多的Lib来支持以及需要高效的去编写自动化测试案例外,还需要一个好的自动化测试框架平台来支撑我们的自动 ...

  3. .NET平台框架解读

    概述 微软在.NET跨平台之路上付出了巨大的艰辛,同时做了海量的工作. 首先推出了统一的API标准规范库 .NET Standard,并不断补充完善标准库,截止目前(2023-6-30)最新版本为 . ...

  4. 平台框架_从框架到平台

    平台框架 当我在十年前以Java开发人员的身份开始职业生涯时,该行业正经历着革命性的变化. 2003年发布的Spring框架Swift流行,并成为庞大的J2EE平台的严重挑战者. 经过过渡时间后,我很 ...

  5. TDEngine游戏平台框架逻辑

    TDEngine游戏平台框架逻辑 服务器组成 服务器由网关服(可多个),大厅服(可多个),和游戏逻辑服组成,其中游戏逻辑服可布置在大厅服上,详情请参考下图 如果没有外部负载均衡或者偏小型的服务器,网关 ...

  6. JAVA SpringBlade 微服务开发平台框架,企业级的SaaS多租户微服务平台,基于Spring Boot 2.7

    SpringBlade微服务开发平台 完整代码下载地址:JAVA SpringBlade 微服务开发平台框架,企业级的SaaS多租户微服务平台 采用前后端分离的模式,前端开源两个框架:Sword (基 ...

  7. MSCode微服务平台框架基于SpringCloud、SpringCloud Alibaba、SpringBoot和Activiti7工作流,快速开发办公OA、CRM、ERP、电商、信息管理等业务系统

    MSCode微服务平台框架 mscodecloud.com 基于Spring Cloud.Spring Boot和Activiti7工作流,提供所有源码和详尽文档,帮助企业快速开发分布式业务系统. 企 ...

  8. 【原创】面向企业应用的平台框架的思考

    面向企业应用的平台框架应该是什么样子的?或者说都应该具有哪些特性(现在流行说features,而不说functions)?我也看了一些书籍,比如<企业应用架构模式>,不过它太老了,翻译成中 ...

  9. 2.1.太极平台框架—表单介绍与使用

    1.表单介绍 一个表单对应数据库中的一个表,但一个表可以对应多个表单. 点击表单管理,可以看到所有的表单.可以按照菜单进行分类.如下图所示. 1.1.表单基本功能 1.1.1.调用路径 就是访问该表单 ...

最新文章

  1. 做为前端开发者,你应该要懂的 http协议
  2. Java中this的简单应用
  3. MySQL ADDTIME(t,n) 时间 t 加上 n 秒的时间
  4. string拼接_String拼接操作-的优化
  5. 数字图像处理--灰度图转伪彩色图
  6. flex 表格勾选后 鼠标滚动会自动勾选_外设Show 篇四十五:办公鼠里的BBA做工如何,罗技MX Anywhere 3鼠标体验_鼠标...
  7. 微课|中学生可以这样学Python(6.3节):变量作用域
  8. SQL中,like的SQL注入防止,使用预编译SQL(?)的写法
  9. matlab NORM函数
  10. 台式计算机无线网卡怎么找,怎么找出台式电脑中的无线网卡驱动
  11. 麻辣香锅(Spicy Hot Pot)浏览器劫持病毒应急方法
  12. day02 python基础
  13. 交换机的基本原理与配置
  14. 中学生怎样才能合理使用计算机,浅析中学生计算机的使用
  15. UVA 11584 Partitioning by Palindromes
  16. 《Hud 2589》Phalanx详解
  17. 云服务器文件打包,如何把云服务器的文件打包出来
  18. 手机html input打开数字,html5 input的type属性启动数字输入法
  19. HTML5+CSS3小实例:手风琴式加载动画
  20. Python全局变量和局部变量(超详细,纯干货,保姆级教学)

热门文章

  1. 软件测试开发实战| Java版本,Gson解析json比较常用的2种方式
  2. 2021高考成绩查询镇远一中,【护航高考 消防同行】——镇远消防圆满完成高考期间消防安保任务...
  3. php根据类名字符串,PHP 5.5 新特性 ::class 获取类名字符串
  4. 蓝桥杯泊松分酒java_【蓝桥杯】泊松分酒
  5. 保研论坛app服务器网站,保研论坛官网版app
  6. 服务器放在机柜_机架式服务器和塔式服务器有区别吗
  7. ordfilt2非线性滤波器
  8. 【java】swing构件的操作
  9. 判断某个磁盘中是否有某个文件
  10. java xml 字符串转对象_java读取xml文件并转换成对象,并进行修改