Chinaunix首页 | 论坛 | 博客
  • 博客访问: 148662
  • 博文数量: 12
  • 博客积分: 2126
  • 博客等级: 大尉
  • 技术积分: 425
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-09 21:55
文章分类
文章存档

2012年(1)

2011年(1)

2009年(1)

2008年(9)

我的朋友

分类: 项目管理

2008-03-27 13:48:19

学了这么久的设计模式,稍微总结一下:
1.关于设计的一些基本原则:
开闭原则:系统是可扩展的,对于顶层的抽象是不可修改的.
里式代换原则:任何基类可以出现的地方,子类一定可以出现.(扩展)
依赖倒转原则:要依赖于抽象,不要依赖于实现.
合成/聚合复用原则:要尽量用合成/聚合,而不是继承关系实现复用.
迪米特法则:一个软件实体应当与尽可能少的其他实体发生相互作用.
接口原则:应当为客户端提供尽可能小的单独的接口,而不是提供大的接口.
2.具体设计模式的简单分析(不写代码,要代码参考java与模式 或者 head first design pattern)
简单工厂模式:
简单工厂类就是利用一个类充当工厂的作用.此工厂类中包含一个抽象产品(或者接口),在工厂方法中实现new.
如马这个抽象产品,此时工厂中含有马这个抽象产品,在具体的工厂方法中实现生产白马,黑马等具体的产品.
具体工厂模式:
此模式与上面不同的是就是每种产品都有自己的一个工厂类.如白马有白马的工厂类,此时可以将工厂方法实现放在白马这个类里面.
抽象工厂模式:

每个具体工厂类可以生产多种产品.一个具体工厂类对应一个产品族.就比如上面的马例子,再加入一个产品如羊(也有白羊和黑羊这两种具体产品).所以此时的一个具体工厂类就可以用于生产(白马与白羊,或者另外黑马与黑羊).(不过这里有个疑问暂时未解决为什么不是一个具体工厂类直接生产马,一个工厂类生产羊,不过这样好像就是上面的具体工厂模式了).此模式在awt,swing中运用较多,由于java的跨平台,导致各个部件在不同的平台外观不同,所以一个具体类就可以根据平台的不同生产出此平台的产品.

 

单例模式:

比较直观,就是允许运行时只存在一个实例,将构造函数私有化.不过对于多线程的情况,就需要另外考虑.

方法有线程中的synchronized ,或者直接在类的field直接生产此实例.

 

builder模式:

一个抽象的builder类,一个具体的builder类(用于生产具体的产品),而用户类中包含一个builder类(抽象),用于产生具体的产品.此时用户不知道具体的产品,他只用到了具体的builder类,对于产品无从了解.

 


适配器模式:

对于此模式可联想到电源变电器,国内是220V,国外有些110V,所以需要一个电压变换器(就是适配器的作用).java中用到的就是iterator,将以Collection为接口的包装起来,用于依次迭代,循环等.

 

暂时到这里,下次补充!

阅读(1341) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:Java Power Tools---ANT

给主人留下些什么吧!~~