论坛首页 Java企业应用论坛

软件架构经典语录

浏览 6213 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (1)
作者 正文
   发表时间:2011-11-07  
软件架构经典语录

软件的可维护性和可复用性是面向对象的设计要解决的核心问题。
“开闭原则”讲的是一个软件实体对扩展开放,对修改关闭。
接口使可插入性变得可能,在一个类等级结构的任何一个类可以实现一个接口,这个接口影响到此类的所有子类,但不会影响到此类的所有超类。
抽象类一定是用来继承的,具体类不是用来继承的。
创建模式围绕创建者和被创建者是否可以抽象,已经创建的个数,家族产品,产生了许多不同的创建模式。单例,多例,抽象工厂,建造模式等等。
对象适配器模式可以把多种不同的源适配到同一个目标,而类适配器模式很难把源类和子类都适配到目标类。
缺省适配器模式其实就是一个类适配器模式,这个缺省的适配器最好是抽象类,不能实例化,因为提供的方法都是缺省的实现,一般是没有意义的,具体的实现类才是真正的适配器类,实现自己需要的接口方法,这时候缺省适配器变成了源。
合成模式比较适合对象的树型结构的管理,根据component定义的结构方法是否全分为透明式和安全式,透明的接口定义所有的方法,但是运行期可能报错,安全式,只有composite实现管理对象的方法,component定义对象本身的功能方法。
装饰模式是继承关系的替代方案,和合成模式形式上差不多,实际上不一样,在合成模式的composite上继续继承子类修饰构件(component),适配器模式关注的仅仅是接口的适配,装饰模式关注对象的性能,会给对象的方法附加一些功能。
代理模式,是给对象提供一个代理对象,控制原对象的引用,原对象和代理对象实现同一个接口定义,实现上有点类似对象适配器模式,只是要加强对原对象的控制和原对象和代理对象要实现同一个接口。
享元模式分单和复合享元,享元的对象要分不变状态和可变状态,可变状态通过具体享元对象通过参数事例,这个模式里关键的是享元工厂,通过这个工厂创建具体的享元对象和是否共享享元对象,享元工厂一般是单例的模式实现。
封装变化,实际上是达到“开-闭”原则的途径,与组合/聚合复用原则相辅相成;闭或封装了抽象的商业逻辑,实现是“开”的,允许具体实现的多态性。
一个好的设计通常没有多于两层的继承等级结构,如果出现两个以上的变化因数,找出那个是静态的可以使用继承关系,那个是动态的必须使用聚合关系。
抽象化,实现化,脱耦是理解桥梁模式的关键,通过聚合关系实现桥梁的作用。
享元模式的对象可以是不变模式的对象,但并不要求享元模式一定是不变对象。不变模式分弱不变和强不变模式两种,“不变”和“只读”是很大的不同,不变是不可以修改,只读表示变量本身不可修改,但是可以在其它变量发生变化时发生变化。String类就是一个不变模式的实现体现。
策略模式实现算法职责(环境)和算法本身的分离。策略模式在每一个时刻只能使用一个策略对象。一个应用对应有时对应几个策略对象,应用程序可以在几个策略对象之间调换。策略在应用程序启动的时候就已经创立。
模板模式:涉及具体方法(模板方法),抽象方法(子类实现),钩子方法;servelet的实现方式就包括模板模式和观察者模式,如实现一个servelet和监听器(severlet、session)。
观察者模式主要要理解主题角色和观察者角色的概念,一类主题让一个或多个观察者检视,主题类管理观察者对象(增、删、通知),观察者类实现update方法(注意方法的标准命名,类似模板方法的do开头命名);观察者模式在MVC里的视图相当于观察者类。
迭代子模式关键聚集类要有创建迭代子类的方法,通过this把对象引用放到迭代子类里,同时聚集类要提供访问里具体元素的访问方法。
责任链模式:可以理解为一个链表把一些对象连接起来,每个对象都有关联的下一个对象,一个请求给一个对象后,有由这个对象决定自己处理还是让下面的对象处理。
命令模式把发出命令的职责和执行命令的职责分开。
备忘录模式又叫快照模式、token模式,有发起者、负责人、备忘录角色、备忘录对象记录的是对象内部对象的临时状态。也可以存储多个备忘录对象。
状态模式的状态对象根据上下文的状态决定对应的状态实现类对象。
   发表时间:2011-11-08   最后修改:2011-11-08
其实你主要在讲设计模式,目前,大家都认为架构是设计中的一个方面,正好我这里也有些语录:吃"软饭"的一些不良思考习惯
0 请登录后投票
   发表时间:2011-11-08  
恩,一起研究的哈。。。。
0 请登录后投票
   发表时间:2011-11-08  
兄弟啊,就不能排排版吗,大家眼睛都花了。
0 请登录后投票
   发表时间:2011-11-09  
表示看着很吃力!
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics