当前位置: 技术问答>java相关
:)----设计模式学习笔记------1
来源: 互联网 发布时间:2015-07-18
本文导语: 本人刚开始学习设计模式,看的是英文的Java版。这里是自己的一些心得,可不知道自己理解是否有偏差,希望高手指点!内容会继续添加! 1. Bridge:定义一个类A,在A中定义可能生成的类型b和c,然后通过传给A构建器...
本人刚开始学习设计模式,看的是英文的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块。
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块。
|
继续阿,我还想看哦
|
严重支持
|
总结的太好了.我正愁看不懂英文呢.只能看最原始的那个design pattern.
多多总结.我全部复制下来.
多多总结.我全部复制下来.
|
总结一下:总结一下:
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块。
5. Composite:该模式的实现方式就是先定义一个接口或抽象类I,然后定义一个Composite(组合)类,该类实现了定义的接口I,并且该类可以放置(添加、删除和查询对象)实现了接口I的对象(在具体实现上往往是利用一个数组、Vector或hastable类存放对象)。该类还提供了访问这些对象的方法。这些对象也都实现了I接口,组合类在实现接口方法时就是调用对象的该方法。
6. Decorator:在Java中,JscrolPane是一个容器类,在它内部放上一个本身不支持滚动条的文本区后,该文本区也就支持了滚动条。滚动条就是一个Decorator(油漆工),而文本区是一个被油漆者。该模式的常见实现是在可视化组件中:先声明一个接口I,该接口实现Jcomponent,在具体的油漆工类中,把要“油漆”的对象作为参数传给油漆工类的构建函数,在该类中添加该对象的一些功能。
对Decorator的最通用解释是这样:如果一个被“油漆”对象X实现了接口I,那么我们的Decorator类也实现接口I,并且该类有一个X类型的成员变量,该变量通过构建器传递近来。在该类中再定义扩充功能的私有方法(或者说修饰方法、油漆方法),这些方法在类内部只被对象X所调用,以保证类显示该客户的方法仍是接口I的方法。因为Decorator和X实现了相同的接口,所以客户代码通过使用Decorator类来调用对象
该7了, zgpp(zgpp)
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块。
5. Composite:该模式的实现方式就是先定义一个接口或抽象类I,然后定义一个Composite(组合)类,该类实现了定义的接口I,并且该类可以放置(添加、删除和查询对象)实现了接口I的对象(在具体实现上往往是利用一个数组、Vector或hastable类存放对象)。该类还提供了访问这些对象的方法。这些对象也都实现了I接口,组合类在实现接口方法时就是调用对象的该方法。
6. Decorator:在Java中,JscrolPane是一个容器类,在它内部放上一个本身不支持滚动条的文本区后,该文本区也就支持了滚动条。滚动条就是一个Decorator(油漆工),而文本区是一个被油漆者。该模式的常见实现是在可视化组件中:先声明一个接口I,该接口实现Jcomponent,在具体的油漆工类中,把要“油漆”的对象作为参数传给油漆工类的构建函数,在该类中添加该对象的一些功能。
对Decorator的最通用解释是这样:如果一个被“油漆”对象X实现了接口I,那么我们的Decorator类也实现接口I,并且该类有一个X类型的成员变量,该变量通过构建器传递近来。在该类中再定义扩充功能的私有方法(或者说修饰方法、油漆方法),这些方法在类内部只被对象X所调用,以保证类显示该客户的方法仍是接口I的方法。因为Decorator和X实现了相同的接口,所以客户代码通过使用Decorator类来调用对象
该7了, zgpp(zgpp)
|
我支持你写,你支持我领分。
|
写的还真不错!
|
我也在学设计模式,大家可以探讨啊
|
还可以,继续。但学习设计模式主要是应用,在使用中学习会更有效
|
这是我对设计模式的些想法
http://www.csdn.net/expert/topic/869/869430.xml?temp=.9212915
http://www.csdn.net/expert/topic/869/869430.xml?temp=.9212915
|
学习中!
to zgpp(上帝忘记了我是他爸) 你说的那篇 通过源码学习设计模式
现在各哪里能找到!
to zgpp(上帝忘记了我是他爸) 你说的那篇 通过源码学习设计模式
现在各哪里能找到!
|
向zgpp学习!
|
我感觉有点问题
别的模式我不熟悉,但是工厂模式的用法和你的说法好像是不太一样吧,虽然我还不敢肯定,但是我觉得就你那个例子就不太对,如果你有兴趣的话,我想和你讨论一下这个模式。
其实我觉得这样说有些空泛,如果有必要的话,我们可以贴一些java代码,用代码来说明问题。
别的模式我不熟悉,但是工厂模式的用法和你的说法好像是不太一样吧,虽然我还不敢肯定,但是我觉得就你那个例子就不太对,如果你有兴趣的话,我想和你讨论一下这个模式。
其实我觉得这样说有些空泛,如果有必要的话,我们可以贴一些java代码,用代码来说明问题。
|
有些不对。
|
to zgpp (zgpp) 兄:这些是你抄自书上的呢?还是自己领会到的?
(恕我冒昧)
(恕我冒昧)