- 浏览: 17756 次
- 性别:
- 来自: 深圳
最新评论
文章列表
简单点说,桥接模式就是一种具有两个层次的抽象。
桥接模式就是把事物和其具体实现分开,使他们可以各自独立的变化。桥接模式采用封装、聚合以及继承将责任分配到不同的类中。
1、 桥接模式的故事
电视和电视遥控器的例子可以说明这个两层的抽象。你有TV的接口和Remote Control的抽象类。我们知道,由于不同的设备生产商会制作不同的电视遥控器和电视,所以写具体的TV和Remote Control类不是个好主意。
PS:图中的单词拼写错了。
2、JAVA实例代码
首先定义电视的接口
public interface ITV {
public void on();
publi ...
适配器模式在现代流行的框架中经常用到。
当你想用一个已经存在的类,但这个类的接口与你要求的接口不一直;或者你想创建一个与没有兼容的接口或不相关类协作的可复用的类时候,适配器模式就能派上用场。
1、适配器的故事
我们用下面的例子来展示适配器模式,这个例子的目的是将Orange适配成Apple。
如上图所示,AppleAdapter包含一个Orange的实例,并且继承自Apple。这看起来就像在Orange实例外加了一层AppleAdapter皮肤,Oranger现在就看起来像Apple实例了。
2、类图
3、实例代码
class Apple {
public void ge ...
当你频繁需要创建同类或者相似的对象实例的时候可以使用原型设计模式。原型设计模式就是克隆一个对象实例,再设置可改变的特征,就得到了一个相似或者同类的对象实例。这样可以减少资源的消耗。思考下,为什么能减少资源消耗。
1、原型模式类图
2、代码实例
package com.leon.prototype;
/**
* 设计模式——原型模式,实例代码
*
* @author leon
*
*/
public class ProtoTypeTest {
//创建大量相似的对象实例
public static void main(String[] arg ...
单例模式是Java编程中用到最多的一种设计模式。这种模式用于控制对象的数量并防止外部实例化和修改。这种理念可以推广到只存在一个对象时能更有效地运作的系统中,或者对对象实例化有要求的地方。例如:
1.私有化构造方法——没有类能够创建实例;
2.私有引用——不能修改;
3。公共静态方法——只能从此方法得到对象实例。
1、单例模式趣解
解释器模式,用在有上下文需要被解释的时候。下面的例子是一个非常简单的解释器实现。怎么将字母'a'和'b'解释成'1'和‘2’。
1、类图
2、实例代码
class Context {
private String input;
private String output;
public Context(String input) {
this.input = input;
this.output = "";
}
public String getI ...
未来,时间旅行真的可以实现。备忘录则是时间旅行的关键,因为它能够让一个物体还原到以前的状态。
在下面的例子中,你可以通过时间旅行到你人生的任何时间点,你也可以还原到你曾经到经历过的任何时间点。
1、备忘录模式类图
2、备忘录模式实例代码
package designpatterns.memento;
import java.util.List;
import java.util.ArrayList;
class Life {
private String time;
public void set(String time) {
Sy ...
建造者模式的主要特征是它包含一个逐步处理的步骤来创建东西,也就是说,虽然每一步的实现是不同的但是创建对象的过程都遵循相同的步骤。
1、建造者模式类图
2、代码实例
package designpatterns.builder;
// 创建产品
class Starbucks {
private String size;
private String drink;
public void setSize(String size) {
this.size = size;
}
public void setDrink(String dr ...
1、简述
抽象工厂模式在工厂模式的基础上多添加了一层抽象,跟工厂模式比较一下,这个很容易看得出来。抽象工厂是一个工厂的父类,用来创建其他工厂。可以说是生产工厂的工厂。
2、抽象工厂类图
3、抽象工厂实例代码
interface CPU {
void process();
}
interface CPUFactory {
CPU produceCPU();
}
class AMDFactory implements CPUFactory {
public CPU produceCPU() {
return new AMDC ...
1、简述
工厂模式是通常用不同的参数来创建不同(属性不同等)对象实例的一种模式。下面的例子就是用工厂来创建人类Humen。如果你请求工厂创建一个男孩,工厂就给你一个男孩的实例,如果你请求工厂创建一个女孩,工厂就给你一个女孩实例。基于你传入的参数,工厂创建不同的实例。
2、工厂模式类图
3、实例代码
interface Human {
public void Talk();
public void Walk();
}
class Boy implements Human{
@Override
public void Talk() {
Syst ...
设计模式:外观模式
外观设计模式(Facade design pattern)隐藏了任务内部错综复杂的处理而为我们提供了简单的功能接口。电脑的启动是一个很好的例子。电脑的启动包含CPU启动,内存启动,硬盘启动等等。为了能让用户简便使用,我们添加一个外观,仅仅提供一个简单的接口,来隐藏电脑内部繁琐或者负责的内部处理。
1、外观模式的类图
2、外观模式的例子
//电脑的部件
class CPU {
public void processData() { }
}
class Memory {
...
开发中遇到的问题:看到项目先前实现的代码,有一个逻辑处理,要完成两个界面的切换,而且这个两个界面的切换会共同设置系统的同一个资源的状态,且设置状态的操作(系统中间件已经做了互斥)比较耗时。先前的代码采用了新建线程来设置资源状态来保证主线程不被阻塞。这就出现了一个问题,如果频繁操作切换的话,就会出现系统资源的状态错乱。
应用调用:
Thread call state(true);
Thread call state(false);
Thread call state(true);
Thread call state(false);
Thread call ...