面向对象的架构设计

高焕堂老师的android面向对象视频,讲的非常好。 http://www.maiziedu.com/u/2021/

其中他对 面向对象的理解,延伸出了EIT的概念。

E表示父类

I表示接口

T表示子类

E是控制点,透过I来控制T。

用代码来表示用两种方式:

第一种方式:

public class Parent
{
    public void Fun()
    {
        doSomething();
    }

    public abstract void onDoSomething()
    {
    }
}

public class Child extend Parent
{

    public void onDoSomething()
    {
          //具体实现;不同的子类实现 这里的代码有不同的处理逻辑
    }
}

public class  Main
{
    Parent object = new Child();
    object . Fun();
}
 

子类集成父类,实现了某个抽象方法。

Main类创建对象,来达到父类调用子类的执行流程。  这也叫做 IOC,依赖倒置。

架构师能够利用EIT能设计非常好的架构,

其中E和I是架构师来写的,T是客户端程序员写的。

E和I的作用在于复用。

T的作用在于拥抱变化。

举个例子,比如说:

吃火锅。

在客人来之前,火锅店老板已经把桌子和桌子中央的火锅架(凹下去的那个)弄好。  (架构师)

客人来之后,客人选择吃什么汤底,普通锅(中间没有挡板)还是鸳鸯锅。选择之后,就能把火锅盘放到火锅架上。(客户端程序员)

假如说,桌子火锅架和火锅都是融合在一体的,其中只有一个桌子是鸳鸯锅,那么来了三个客人都想吃鸳鸯锅。

这样就不能同时符合三个客人的需求了。

再举例:

汽车的引擎就是E和I

轮胎就是T

汽车在不同环境 换 不同的轮胎,能够驾驶在沙漠、草原、高速路。

在软件系统中也是一样道理。

EIT的设计使得系统变得分离,达到最终的目的是复用。E和I是复用的。

从大的系统架构来分析。

框架就是 E和I

插件就是 T

按照这样的架构模式,插件是可插拔的。

时间: 2024-10-19 02:38:10

面向对象的架构设计的相关文章

软件面向对象的架构设计基本原则

1,单一职责原则 要求:对象职责明确,一个对象只做好一件事情,必须专注,职责过多容易引起变化的原因就多,程序就不够稳定. 2,开放封闭原则 要求:需求变化时尽量少的修改类的设计,而是通过扩展来完成.即封闭修改,开放扩展. 3,依赖倒置原则 要求:基于接口编程,高层模块调用接口,底层模块实现接口,防止底层变化直接影响高层. IOC,AOP等技术框架最早的成熟应用源自JAVA企业开发,现在.NET领域发展也非常迅速,常见的框架有如下等: Autofac下载地址:http://code.google.

为什么结构化编程、面向对象编程、软件工程、架构设计最后没有成为软件领域的银弹

为什么结构化编程.面向对象编程.软件工程.架构设计最后没有成为软件领域的银弹? 从计算机语言开始讲,一步一步的概述和讲解,最终会有一个结论,大家往后看,即可明白. 1.机器语言(1940年之前) 机器语言,直接使用二进制码0和1来表示机器可以识别的指令和数据. 比如0100011111000010101,请问你知道是什么意思吗?反正我是不知道. 当然了,不可否认的是机器语言是最底层与CPU直接交互. 机器语言之所以没有流行下来,原因三个方面: (1)太难读了; (2)太难写了; (3)太难改了(

mysql性能调优与架构设计笔记

1.mysql基本介绍 mysql支持多线程高并发的关系型数据库; 数据库存储引擎InnoDB.MyISAM; mysql快速崛起的原因就是他是开源的; 性能一直是mysql自豪的一大特点; 2.mysql架构组成 麻雀虽小五脏俱全,mysql虽然简单但其内部结构并不简单; mysql物理文件组成之日志文件: 错误日志error log这里记录mysql运行时严重的警告和错误,以及mysql启动和关闭的日志信息 二进制日志 binary log 记录mysql运行时所有的query和query执

简单Unity时间架构设计(克洛诺斯之匙)

简单Unity时间架构设计(克洛诺斯之匙) 好吧,这次的题目有点标题党之嫌,提出这个设计,是因为最近玩了鬼泣,其中有一个关卡叫做“为了自己的主人”,任务中,需要利用克洛诺斯之匙将时间变慢,便于通过激光镇. 使用克洛诺斯之匙之后,主角的行动是正常的,运走,攻击等等.而其他的如怪物,死亡特效等对象的更新都变慢了.当时我想,如何让不同的对象能够按不同频率更新呢? 在unity中,脚本按时更新的是Time.FixedUpdate,改变其速率只需要修改Time.timeScale就行了.然而这么做非常“鲁

[Architecture Design] 跨平台架构设计

[Architecture Design] 跨平台架构设计 跨越平台 Productivity Future Vision 2011 在开始谈跨平台架构设计之前,请大家先看看上面这段影片,影片内容是微软在2011年所描绘的未来生活蓝图.在观看的过程中,请大家以「软件开发人员」的角度来思考,想想软件开发人员在其中扮演甚么样的角色. 「Productivity Future Vision 2011」 这段影片里面所描绘未来产品,把时间轴拉到现在来看,其实有许多概念已经悄悄融入我们的生活之中.像是影片

面向对象分析与设计—四色原型模式(彩色建模、领域无关模型)(概念版)

阅读目录: 1.背景介绍 2.问自己,UML对你来说有意义吗?它帮助过你对系统进行分析.建模吗? 3.一直以来其实我们被一个缝隙隔开了,使我们对OOAD遥不可及 4.四色原型模式填补这个历史缝隙,让我们真的看见OOAD的希望 5.在四色原型上运用彩色建模增强视觉冲击力 6.通过四色原型模式建模出领域无关模型 7.结束语:建模时你可以不考虑具体实现,但是建模者要懂技术实现 1.背景介绍 至今我都清楚的记得我第一次被面试官问起什么叫"建模"技术时的情景,那是好几年前的事情了,当时是胸有成竹

Android软硬整合设计与框架揭秘: HAL&Framework &Native Service &App&HTML5架构设计与实战开发

掌握Android从底层开发到框架整合技术到上层App开发及HTML5的全部技术: 一次彻底的Android架构.思想和实战技术的洗礼: 彻底掌握Andorid HAL.Android Runtime.Android Framework.Android Native Service.Android Binder.Android App.Android Testing.HTML5技术的源泉和精髓等核心技术,不仅仅是技术和代码本身,更重要的是背后的设计思想和商业哲学. 一.课程特色 l  贯通And

客户端GUI测试技术和自动化测试架构设计简谈

客户端自动化特点 客户端的自动化,通常做过的人都不是很愿意深入讨论.因为除了功能和逻辑之外,不得不面对各种界面变化,各种和环境交互,各种兼容问题以及想不到灰色地带,就算这样,也找不到太多有效的bug.然而即便如此,客户端的自动化必须去做,尤其是GUI的.它的自动化特点是: 复杂 成本高 不容易发现问题 技术要求高 架构很难通用 下面,从一些基本的东西开始一点点的讨论客户端GUI测试的一些问题和处理办法,以及自动化架构设计的一些思路.事实上就像上面说的,GUI的测试并不是为了发现bug,而是回归的

《守望先锋》架构设计与网络同步

原文链接 Overwatch Gameplay Architecture and Netcode Timothy Ford Lead Gameplay Engineer Blizzard Entertainment 翻译:kevinan 在GDC2017[Overwatch Gameplay Architecture andNetcode ]的分享会上,来自暴雪的Tim Ford介绍了<守望先锋>游戏架构和网络同步的设计.一起来看看吧. 哈喽,大家好,这次的分享是关于<守望先锋>(