面向对象的架构

  最近又看了一下java基础,看到面向对象的内容,继承像是模仿了自然界的繁衍。

  提出来这种思想就是为了让编码更简单,从适应计算机的思考更多向适应人的思考方式转变。现在代码中的那些类文件都有在去实现面向对象,编程的布局和架构仍然偏向面向过程,有些繁琐。

  框架里需要记忆的内容很多,而且不能很好的用一条逻辑贯穿起来,都是因为有什么样的需要所以要怎么去处理。这样框架用起来其实也是比较头痛的事情,很多东西都需要一直记着。一段时间不用,再回来找的话也需要时间去熟悉。也就是框架绕的弯比较多,逻辑比较绕。

  首先自己对面向对象的理解就是,站在对象的角度上观察思考问题。编码的时候对于一个类,不该知道的不让它知道。每一个类都有明确的职责划分,功能不重复。就显得比较解耦,而且出问题的时候也比较容易找到相应的类。

  在做软件架构的时候,可以把整改项目看成一个公司。这个公司有多个部门,每一个类都是一个人。梳理工作流程和分配职责的时候,就把这个项目看成一个服务公司的运营,需要有那些部门,安置哪些人,哪些人需要做些什么。

  每当进来一个访问就是一个客户。这个客户走到前台,如何提供好的前台;前台记录好服务后交给后边处理,如何提供一个好的公司内部环境;内部再像里边有数据库部门,根据客户和公司的实际要求分配这个部门的占地和里边数据的安排情况。

  每一个软件里的问题,当把软件映射成一个公司之后,发现在“公司”角度下都已经有很好的处理方式,即使还没有的,由于直接是对人和人之间的处理,所以思考问题也是直接用人的思考方式就可以,不需要再理会计算机的思考方式。也就是不需要理会过程中需要怎样去周转才能实现那些功能,只要都映射成人,需要做什么,数据需要空多少,再有新功能的时候怎么分配都显得很直白。

  可以想象成每个网站或者界面操作都是有一个服务员的,这个服务员告诉你改填哪里,要做什么选择,需要等待多久,等一些列的问题。当网站需要新功能的时候就是告诉这个服务员需要多做些什么事,去掉一些功能的时候就是告诉这个服务员什么业务不做了。公司中部或者后部也做相应的人员和职责调整,使得业务继续运行。这样,每一个功能的增加或者变迁,都可以很容易整理通思路,然后映射到实际代码上。对于整个软件的架构来说,清晰容易了很多。

  架构本身的目的是让团队里每个人都可以专注做自己擅长的那部分,前端的就只前端,中部的就只中部,数据库的就看好数据库。垮“部分”做事是比较头痛的,像java代码和sql代码之间的切换、和html和js的切换,因为涉及到不同的逻辑,所以从代码层统一处理起来是很头痛的事情(特别是要考虑一些深层次问题的时候)。于是做好了代码软件到现实公司的映射,就可以很容易铺展开各层间的思考,都用同一种逻辑连通好了之后,再彼此转化成相应的代码逻辑就可以了。

  这样比较容易看清大局和一些涉及跨域的处理。

  网页是平铺给人的,单纯地像一张纸让人填。架构的时候想象成是一个服务员在旁边引导客户填写这张纸,只是服务员没有显示到屏幕上而已。这个看似简单其实很重要,而且真去抽象那个空间的时候是需要一定想象力的,把所有的过程都通过服务员对接好。只不过最后显示出来的事一张纸,背后的思考是一个迎接客户的服务员。

  这样想可以比较容易把功能找全,比较容易贯通软件需求和各个环节的配合、分工。最重要的事,抽象成人后,不管是增加还是删除一些功能,都可以很少的实现,因为它顺从人的自然思考方式,它的思考空间是人最熟悉的“人和人的交互空间”。不再是解决计算机问题,是解决两个人之间的、一个公司各部门之间的协作问题。

  希望路过的架构师或者编程人员有留意着去做份尝试,这是一个很有趣的建模方式。

时间: 2024-08-24 09:33:56

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

面向对象的架构设计

高焕堂老师的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 clas

面向对象——三层架构(表现层、业务层、持久层)

三层架构:即表现层.业务层.持久层. ① 持久层:采用DAO模式,建立实体类和数据库表映射(ORM映射).也就是哪个类对应哪个表,哪个属性对应哪个列.持久层 的目的就是,完成对象数据和关系数据的转换. ② 业务层:采用事务脚本模式.将一个业务中所有的操作封装成一个方法,同时保证方法中所有的数据库更新操作,即保证同时成 功或同时失败.避免部分成功部分失败引起的数据混乱操作. ③ 表现层:采用MVC模式. M称为模型,也就是实体类.用于数据的封装和数据的传输. V为视图,也就是GUI组件,用于数据的

【2017-04-20】Ado.Net与面向对象结合架构中的数据访问层(实体类,数据访问类)

开发项目三层架构:界面层.业务逻辑层.数据访问层 今天学习一下数据访问层,分为实体类和数据访问类 所有的类放在App_Code这个文件夹下边.养成一个好的习惯. 一.实体类 数据库中的表映射为一个类,类名与表名一致.表中的每一列,都为该类下的成员变量和属性也就是最简单的封装 把数据库中的表名变为类的类名. 把数据库中的每一个列,变为实体类中的成员变量和属性 列名与属性名一致.成员变量名:在列名前边加上下划线.因为在外部访问只能访问到属性,为了看起来一致. using System; using

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

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

回归架构本真:从规划、思维到设计,构建坚不可摧的架构根基

一.什么是架构 关于什么是架构,业界从来没有一个统一的定义.Martin Fowler在<企业应用架构模式>中也没有对其给出定义,只是提到能够统一的内容有两点: 最高层次的系统分解: 系统中不易改变的决定. <软件架构设计>一书则将架构定义总结为组成派和决策派: 组成派:架构=组件+交互:软件系统的架构将系统描述为计算组件及组件之间的交互. 决策派:架构=重要决策集:软件架构是在一些重要方面所作出的决策的集合. 而架构的概念最初来源于建筑,因此,我想从建筑的角度去思考这个问题.Wi

小钢的架构思考:架构设计

原创文章,转载请注明:转载自Keegan小钢并标明原文链接:http://keeganlee.me/post/architecture/20160621微信订阅号:keeganlee_me写于2016-06-21 小钢的架构思考:什么是架构小钢的架构思考:架构规划小钢的架构思考:架构设计 最近一个多月因为忙于工作上的项目重构,所以文章一直没能更新.现在,重构终于暂时告一段落,于是,赶紧抽时间把文章写完更新发布.下面进入正文. 当架构规划的结果,整理出一堆不同优先级的需求,尤其是质量需求之后,接下

Python基础篇【第十三篇】:面向对象

面向对象编程简称OOP(OOP,object-oriented programming)是一种程序设计思想,OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 面向对象设计简称OOD(OOD,object-oriented design)OOD仅意味着来创建你采用面向对象方式架构来创建系统. 面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行.为了简化程序设计,面向过程把函数继续切分为子函数,即把大块函数通过切割成小块函数来降低系统的复杂度. 而面向对象的

《面向对象葵花宝典》阅读笔记

满满的干货!推荐大家购买的一本书,里面很多的内容,都是我编程过程经历过的困惑(相信大家都会遇到),如果早点看到这本书,相信当时我也不会困惑那么久了~所以记录总结一下. PS.欲看此书,不必自宫…… 面向对象理论面向过程与面向对象为什么要面向对象类对象接口抽象类抽象封装继承多态需求模型需求分析518方法,我要发~用例方法要画UML图吗?功能提取领域模型设计模型类模型动态模型实现模型设计原则内聚耦合高内聚低耦合设计模式面向对象架构设计业务架构领域架构软件建构面向对象架构设计技巧原则拆与合 面向对象理

设计模式和面向对象设计原则

1:策略模式 策略模式定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户. 封装变化,多用组合少用继承,针对接口编程而不是针对实现编程. 2:观察者模式 观察者模式定义了对象一对多的依赖关系,这样一来,当一个对象状态改变,依赖它的所有的对象都会收到通知并自动更新. 为对象之间的松耦合设计而努力. 3:模板方法模式 模板方法模式在一个方法中定义了算法的骨架,而讲一些步骤延迟到子类中实线,模板方法使得子类可以在不改变算法结构的情况下,重新定义算法的某些步骤.