:)----设计模式学习笔记------1

zgpp 2002-07-11 03:06:12
本人刚开始学习设计模式,看的是英文的Java版。这里是自己的一些心得,可不知道自己理解是否有偏差,希望高手指点!内容会继续添加!

1. Bridge:定义一个类A,在A中定义可能生成的类型b和c,然后通过传给A构建器的参数之一——类型b或c来决定生成类实例B或C。然后通过组织类B和C的实例来实现界面表现。B和C是具体的组件单元类。这样修改A不会影响B、C,修改B、C也不会影响A。

2. adapter:假如你要实现的类,可能具有多个接口或类的功能操作,而这些操作只是这些接口或类中的一部分。那么就定义一个接口,接口内定义这部分方法,然后定义你要实现的类来实现该接口,在类中仅需定义接口方法的实现。这样原来不兼容的类和接口可以通过你定义的接口来一起工作。

3. Factory:你设计一个基类B,它定义了该类的一些操作和允许子类访问的一些变量。因为该类所操作的对象有不同的表现方式(形式),需要针对不同的方式(形式)定义该基类的不同子类Si。然后定义一个工厂类,该类负责分析基类操作对象的表现方式(形式),以生成不同的子类。假如该工厂类实例是f,则在程序中调用的方式是:B = f.getBClass(操作对象)(getBClass方法返回的是Si)。

4. SingLeton:在类中定义一个静态开关变量,来控制是否可以生成实例。当一个实例生成时,该变量被置为False,当实例被删除时,该变量被置为True。在具体实现的时候最好抛出自己的异常:不可以生成实例时抛出。在调用new试图生成实例时使用Try……Catch块。
...全文
40 45 打赏 收藏 转发到动态 举报
写回复
用AI写文章
45 条回复
切换为时间正序
请发表友善的回复…
发表回复
zgpp 2002-07-19
  • 打赏
  • 举报
回复
以上是JavaPatterns里的关于单模模式的例子,希望和Erazor(Erazor)兄共分析!

想和yyxch(乱马1/2)兄讨论工厂模式呢,怎么找不到人了!
zgpp 2002-07-19
  • 打赏
  • 举报
回复
class Spooler
{
//this is a prototype for a printer-spooler class
//such that only one instance can ever exist
static boolean instance_flag=false; //true if 1 instance

public Spooler() throws SingletonException
{
if (instance_flag)
throw new SingletonException("Only one printer allowed");
else
instance_flag=true; //set flag for 1 instance
System.out.println("printer opened");
}
//-------------------------------------------
public void finalize()
{
instance_flag = false;
}
}
//===============================================
class SingletonException extends RuntimeException
{
//new exception type for singleton classes
public SingletonException()
{
super();
}
//-----------------------------------------------
public SingletonException(String s)
{
super(s);
}
}
//===============================================
public class singleSpooler
{
static public void main(String argv[])
{
Spooler pr1, pr2;
//open one printer--this should always work
System.out.println("Opening one spooler");
try{
pr1 = new Spooler();
}
catch (SingletonException e)
{System.out.println(e.getMessage());}
//try to open another printer --should fail
System.out.println("Opening two spoolers");
try{
pr2 = new Spooler();
}
catch (SingletonException e)
{System.out.println(e.getMessage());}
}
}

zgpp 2002-07-19
  • 打赏
  • 举报
回复
To jeckykang(小康)兄 :如果是抄书上的就好了,那样别人说我写的不对的时候我就可以理直气壮地反驳他了。
这是我看《DESIGN PATTERNS JAVA COMPANION》后总结的,说实话,因为E文并不好,理解有偏差!希望大家提出!不要象 johnwesley那样只说“有些不对”,我就毛了,那些不对呀!
说出来吗,大家讨论!
shine_car 2002-07-18
  • 打赏
  • 举报
回复
up
hjt3328 2002-07-18
  • 打赏
  • 举报
回复
继续阿,我还想看哦
KillAllError 2002-07-18
  • 打赏
  • 举报
回复
向zgpp学习!
长乐子 2002-07-18
  • 打赏
  • 举报
回复
to zgpp (zgpp) 兄:这些是你抄自书上的呢?还是自己领会到的?
(恕我冒昧)
CanFly 2002-07-18
  • 打赏
  • 举报
回复
学习中!

to zgpp(上帝忘记了我是他爸) 你说的那篇 通过源码学习设计模式
现在各哪里能找到!
seani 2002-07-18
  • 打赏
  • 举报
回复
gz
凯文 2002-07-18
  • 打赏
  • 举报
回复
有些不对。
zgpp 2002-07-18
  • 打赏
  • 举报
回复
终于有人批评了,好!

这样才能使我坚持下去,呵呵……

这里的东西都是粗浅的理解呀,个人之见呀,列出来就是希望大家讨论的呀,如果你发现了错误,不是“一棒子打死”,要指出缺点和不足呀!

呵呵……
别闪,我又要加了……
cxj_2000 2002-07-18
  • 打赏
  • 举报
回复
老大,写好一点,这种东西在网上随手可见。
zgpp 2002-07-18
  • 打赏
  • 举报
回复
to:yyxch(乱马1/2),到下面这个帖子,我在等你呢!
http://www.csdn.net/expert/topic/883/883984.xml?temp=.6427729

当然,也在等大家呀,欢迎大家去侃侃!
zgpp 2002-07-18
  • 打赏
  • 举报
回复
to yyxch(乱马1/2) :首先谢谢你。
你能告诉我那些不同吗,比如你是怎么理解的?

其实我写这些只是自己通过看完书后的总结,我感觉也不可能完全正确,只是我的个人心得:),这里写出来,也希望大家先有个认识,看书时可以节省一些时间。

先谈谈你对工厂模式的理解好吗,如果需要,咱们还可以通过源码来具体分析,期盼着你再次光顾!
zgpp 2002-07-18
  • 打赏
  • 举报
回复
To: CanFly(目标明确并做所必须做的一切) 你用了一个感叹号,我都不知道你的意思了,如果你想找到这个帖子就搜索吧,是斑竹的一个帖子!
To GIGE(豆沙包) :你是不是回应错了地方呀?


yyxch 2002-07-18
  • 打赏
  • 举报
回复
我感觉有点问题
别的模式我不熟悉,但是工厂模式的用法和你的说法好像是不太一样吧,虽然我还不敢肯定,但是我觉得就你那个例子就不太对,如果你有兴趣的话,我想和你讨论一下这个模式。
其实我觉得这样说有些空泛,如果有必要的话,我们可以贴一些java代码,用代码来说明问题。
GIGE 2002-07-18
  • 打赏
  • 举报
回复
做到头都晕了,最后5题放弃。嘿嘿,还剩9分
qxjavajava 2002-07-17
  • 打赏
  • 举报
回复
能给我讲讲设计模式使用在哪个方面的吗?
小弟孤陋寡闻。
bonmot 2002-07-17
  • 打赏
  • 举报
回复
这是我对设计模式的些想法
http://www.csdn.net/expert/topic/869/869430.xml?temp=.9212915
Erazor 2002-07-17
  • 打赏
  • 举报
回复
我昏,你这对Design Pattern的理解也太。。。

那个Singleton和你说的搭不上什么边啊

别误人子弟啊。。。
加载更多回复(25)

51,411

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧