Design Model in 2008

[b]高聚合,低偶合[/b]

为了降低对象之间的耦合度、增加灵活性,于是有了设计模式
设计师们不断地寻求一种复杂度更低的

对struts的优化,定义接口如下:
//ResultSet to Bean
public void ConvertRStoBean(Connection con,ResultSet rs,Map para,_RootBean goal);


public void ConvertRStoBean(Connection con,String sql,Map para,_RootBean goal);

//ResultSet to List
public ArrayList ConvertRStoList(Connection con,String sql,Map para,String className);


基本模块设计原则:
1,高聚合:一模块与其他模块之间没有过多的相互作用
2,规模适中:单个模块的成本与系统总成本成反比
3,上下层模块的低耦合:上下层模块之间的影响关联度以及扇入扇出原则


[b]MVC设计原则[/b]
M重点在于高内聚和低偶合

C提倡灵活性,定义框架,讲究重用性

目前我对优秀框架的判断标准是:对需求变化的快速构架能力

[b]面向接口和面向切面[/b]
面向接口:它是比abstract更抽象的概念,关心的不是具体实现而是更强的扩充性和偶合度,一个设计方法你甚至找不到它的具体实现,这是面向接口的一个境界。

面向切面(AOP):对于非核心且烦琐的业务(如日志,事物等等),为了讲究重用性,把这些片面业务的实现抽象为一个模块,从而省去了大量繁杂的工作,让开发者专注与核心业务的开发。
另外,引入了IOC思想,即对象的周期和对象之间的关系统一由另一容器来构件和管理,并可实现“动态绑定”。



[b]23种设计模式:[/b]
看了 cbf4life大哥的写的设计模式,挺生动的。在这里写下我的简要理解。

1,策略模式(Strategy Pattern)
策略接口------>N多策略实现
执行者------->调用策略接口,并不关心用何种策略,可以有某种“选择机制”,组合关系

2,代理模式(Proxy Pattern)
实现者------->做自己该做的实现
代理人------->只接客,但不执行,给相应实现者,在外人看来,是代理者在执行,其实它只是一个“空壳”。[b](注意代理人和实现者需同一个interface(问题))[/b],组合关系。
执行者------->调用代理人为自己办事

3,单例模式
4,多例模式 这两个就不说了

5,工厂模式(Factory Pattern)
一个工厂-------用于生产对象实例
产品实现-------各种需要生产的产品
产品类别-------各类产品接口
执行者 --------通知工厂我需要什么产品,并提供规格说明书(这里有种方法可以由已知的interface找到所有实现class)

6,抽象工厂模式(Abstract Facotry Pattern)
一个工厂--------用于生产对象实例
多个部门--------为了适应复杂的对象构造结构,可能产品有方的,或者圆的(抽象类还是实现类,看具体应用)
A类产品实现-----属于A类的产品所有产品(可能定义为abstract class,class)
A类产品接口-----A类产品接口
B类产品实现-----属于A类的产品所有产品(同上)
B类产品接口-----A类产品接口
......
执行者----------调用工厂,提供规格说明书(说明书里标明产品说明,工厂根据说明内容自动匹配叫哪个部门生产,所以单例+参数能解决这个缺点)

7,门面模式(Facade Pattern)
实现者----------这个家伙很累,需要实现A,B,C,D....并不强调执行顺序
实现者接口------实现类的接口
守门人-----------这个人告诉实现者要做事了,做完后把结果告诉他,守门人叫实现者实现
执行着-----------告诉守门人该做事,并告诉守门人这件事为谁而做
组合关系

8,适配器模式(Adapter Pattern)
A类接口---------A类,注意Adapter是适用于不同接口中共用问题的,可能涉及到两个不同子类系统的大类系统中。
B类接口---------B类
一个适配器-------主要作用是把A类接口伪装成B类接口,在B类系统中当作B类对象来操作就OK了。
不符合原有设计的时候才考虑通过适配器模式减少代码修改带来的风险。

9,装饰模式(Decorator Pattern)
原始接口——————
装饰接口——————
装饰实现——————构造函数传递基类对象,这里是组合关系

装饰模式解决“灵活性差”和“主体类在多方向上的扩展问题”,组合关系,对继承关系的补充,可动态地指定扩展功能。
Son son =new AASon();
son =new AADecorator(son);
son =new BBDecorator(son);
son同时具有了AAD BBD两个扩展功能。

10、命令模式(Command Pattern)
做事接口——————
做事者——————A,B,C....
总头头————————定义了很多做事着
头头————————A类人的头,B类人的头,C类人的头...
对客户的接口—————接收要谁做事
客户—————————定义谁做事,给接口
组合关系

附录:
根据完整类名创建对象
public class CJMethods {
public static void main(String args[]) {
try {
Class c = Class.forName(args[0]);
Method m[] = c.getDeclaredMethods();
Field[] fieldArray=className.getDeclaredFields();

for (int i = 0; i < m.length; i++)
System.out.println(m.toString());
} catch (Throwable e) {
System.err.println(e);
}
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值