• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
仓井非空
博客园    首页    新随笔    联系   管理    订阅  订阅

常用设计代码一

一 单例模式

饿汉:
public class SingleTon {

private static final SingleTon INSTANCE = new SingleTon();

private SingleTon() {

}

public static SingleTon getInstance() {

return INSTANCE;
}

}

懒汉:
public class SingleTon {

private volatile static SingleTon INSTANCE = null;

private SingleTon() {

}

public static SingleTon getInstance() {

if (INSTANCE == null) {

synchronized (INSTANCE) {

if (INSTANCE == null)

INSTANCE = new SingleTon();
}

}

return INSTANCE;
}

}

对比:因为对象在构造的时候可能会有时间开销,因此在多线程的时候需要考虑到线程安全,voliate关键字只能保证对象的可见性, synchronized保证线程安全

二: 工厂模式

类图:

file://C:\Users\cash\AppData\Local\Temp\ct_tmp/1.png




普通工厂代码:

1.接口实现功能

public interface Sender {

public void send();
}
2. 不同的类实现不同功能:

QQ: public class QQ implements Sender {
@Override
public void send() {
System.out.println("QQ send info");
}
}

WeChat: public class WeChat implements Sender {
@Override
public void send() {
System.out.println("WeChat send info");
}

}

3.工厂创建对象

public class SendFactory {

public static final String QQ = "QQ";
public static final String WeChat = "WECHAT";

public Sender product(String type) {

if (SendFactory.QQ.equals(type)) {

return new QQ();

} else if (SendFactory.WeChat.equals(type)) {

return new WeChat();
}

return null;

}
}

普通工厂和工厂方法差不多,只是在普通工厂中创建对象需要一个参数(type),工厂方法中提供多个方法,不同方法创建不同工厂


三 适配器模式

类适配器:

类图:

file://C:\Users\cash\AppData\Local\Temp\ct_tmp/2.png



代码:

接口抽象共同功能:
public interface Targetable {

public void method1();

public void method2();
}

产品一实现了功能:
public class Source {

public void method1(){

System.out.println("method1....");
}

新的产品需要功能2,创建适配器保证功能一二正常运行


public class SpecialAdapter extends Source implements Targetable {

@Override
public void method2() {

System.out.println("method2 ...");
}
}

对象适配器:

public class SpecialAdapter implements Targetable {

private Source source;

public SpecialAdapter(Source source) {

this.source = source;
}

@Override
public void method2() {

System.out.println();
}

@Override
public void method1() {

source.method1();
}
}

适配器关键字:组合 继承 实现



posted @ 2018-08-05 23:02  仓井非空  阅读(253)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3