模式再学习
来源:互联网 发布:汇川plc编程软件1. 编辑:程序博客网 时间:2024/06/11 00:06
1. Façade 模式 (外观)
意图: 希望简化现有系统的使用方法。需要定义自己的接口。
问题: 只需要使用一个复杂系统的一个子集。
解决方案: Façade向用户展现使用现有系统的一个新的接口。
实现: 定义一个新的类来提供所需的接口。
让新的类使用现有系统。
适用情况:1、不需要使用一个复杂系统的所用功能,并且可以创建一个新的
类来访问原有系统的功能。
2、希望包装或者隐藏原有系统。
3、希望使用原有系统的功能,并且希望增加一些新的功能。
4、编写一个新类的代价小于让所有人都学会使用原有系统。
2. Adapter 模式 (适配器)
意图:将一个无法控制的现有对象与一个特定接口相匹配。
问题:一个系统拥有正确的数据和行为,但接口确实不匹配的。
解决方案:Adapter模式用我们需要的接口对无法修改的类进行包装。
实现:将现存的类包含在另一个类中。包容类与需要的接口相匹配,并调用
被包容的类的方法。
代码片断:实现Adapter模式
Class Circle extends Shape {
private XXCircle pxc;
public Circle() {
pxc=new XXCircle();
}
void public display () {
pxc.displayIt ();
}
}
3. Factory 模式 (工厂)
意图:为系统结构提供了非常灵活强大的动态扩展机制。
问题:根据具体的情况得到需要的实例化对象。
解决方案:Factory 模式专门建立了一个生产实例的工厂。
实现: 定义一个工厂类;在类中定义一个生产不同实例的静态方法。
根据具体的参数生产出不同的实例。
代码片断:
public static Sample creator(int which){
//getClass 产生Sample 一般可使用动态类装载装入类。
if (which==1)
return new SampleA();
else if (which==2)
return new SampleB();
}
}
4. Abstract Factory 模式 (工厂)
Facotry与Abstract Factory两个模式区别:在于需要创建对象的复杂程度上。如果我们创建对象的方法变得复杂了,如上面工厂方法中是创建一个对象Sample,如果我们还有新的产品接口Sample2.
代码片断:
public abstract Sample creator();
public abstract Sample2 creator(String name);
}
public class SimpleFactory extends Factory{
public Sample creator(){
.........
return new SampleA
}
public Sample2 creator(String name){
.........
return new Sample
}
}
public class BombFactory extends Factory{
public Sample creator(){
......
return new SampleB
}
public Sample2 creator(String name){
......
return new Sample2B
}
}
5. Singleton模式 (单态)
意图:你希望只拥有一个对象
问题:几个用户需要引用同样的对象,确保实例对象只有一个。
解决方案:保证一个实例。
实现:添加一个公共静态方法,如果这个对象的实例为NULL,就对这个类进行实例化,返回对象的实例;否则,保持此对象实例;
可惜--图真的不好贴;不然真的很容易让人理解------------
- 模式再学习
- 命令模式再学习
- 设计模式之单例模式------学习学习再学习
- android mvc模式再学习
- 模式学习:观察者模式
- 学习模式
- 学习模式
- 模式学习
- 模式学习
- 学习模式
- 实模式到保护模式再返回实模式的学习代码
- 设计模式学习--适配器模式
- 设计模式学习--观察者模式
- 设计模式学习--命令模式
- 策略模式--设计模式学习
- 设计模式学习----Builder模式
- 设计模式学习----外观模式
- 设计模式学习----代理模式
- oracle与SQLSERVER常用函数对比.
- 在b/s开发中经常用到的javaScript技术
- 用CSS floats创建三栏页布局
- 创建灵活的CSS2边框效果
- 无延迟翻滚的图形/CSS混合风格的按钮
- 模式再学习
- i++,i--与++i,--i 研究
- 关于女人的64个迷
- 把XHTML/CSS页面转换成为打印机页面
- 将form提交到一个没有边框的弹出窗口中
- 一个符合w3c标准(css&xhtml)的页子!
- 把货币金额转换成大写的函数(水晶报表BASIC语言版)
- 【转帖】笨笨找工作——一个清华研究生的求职总结
- 在C#中用户控件与窗体间的消息传递