java设计模式----创建型
来源:互联网 发布:python nginx日志分析 编辑:程序博客网 时间:2024/06/08 09:16
java 设计模式:总体分为三大类
创建型:工厂模式 单例模式 建造者模式
结构型:桥接模式 适配器模式 代理模式 装饰者模式 外观模式 组合模式
行为型:
工厂模式:创建一个工厂 工厂里是一个生产对象的地方 需要时直接在工厂里面提取一个对象即可;
应用场景:需要频繁的使用一个对象,创建该对象比较耗内存
静态工厂:
//发送消息服务的接口
public interface MsgSend {
public void send();
}
//发送邮件
public class EamilSender implements MsgSend {
@Override
public void send() {
System.out.println("发送邮件消息");
}
}
// 发送短信
public class TeleSender implements MsgSend{
@Override
public void send() {
System.out.println("发送短信消息");
}
}
// 工厂类
public class MsgFactory {
public static EamilSender getEamilSender(){
return new EamilSender();
}
public static TeleSender getTeleSender(){
return new TeleSender();
}
public static void main(String[] args) {
// 测试
MsgFactory.getEamilSender().send();
MsgFactory.getTeleSender().send();
}
}
单例模式:好处 保证在jvm中只有一个该对象的实例存在;
对于一些大型的对象创建时很消耗内存;省去了new的炒作;
有些类如交易所的核心交易引擎,控制着交易流程,如果该类可以创建多个的话,
系统完全乱了。(比如一个军队出现了多个司令员同时指挥,肯定会乱成一团),所以只有使用单例模式,才能保证核心交易服务器独立控制整个流程。
public class SingleTon {
// 私有的静态实例 防止被引用,赋值null 目的是实现延迟加载
private static SingleTon instance = null;
// 私有的构造方法 防止被实例化
private SingleTon() {
}
// 方法上的同步锁 保证线程安全 加了同步锁性能降低
public static synchronized SingleTon getSingTon() {
if (instance == null) {
return new SingleTon();
}
return instance;
}
// synchronized 只需要锁住new 对象的这一步
public static SingleTon getSingTon1() {
if (instance == null) {
synchronized (instance) {
instance= new SingleTon();
}
}
return instance;
}
}
建造者模式:与工厂模式类似,不同的地方就是 工厂模式创建的是单品,建造者模式创建的是多个单品
public class Builder {
private static List<MsgSend>list= new ArrayList<>();
public static void produceTele(int count){
for (int i = 0; i < count; i++) {
list.add(new TeleSender());
}
}
public static void produceEamil(int count){
for (int i = 0; i < count; i++) {
list.add(new EamilSender());
}
}
public static void main(String[] args) {
Builder.produceEamil(10);
Builder.list.get(0).send();
Builder.produceTele(1);
Builder.list.get(0).send();
}
}
创建型:工厂模式 单例模式 建造者模式
结构型:桥接模式 适配器模式 代理模式 装饰者模式 外观模式 组合模式
行为型:
工厂模式:创建一个工厂 工厂里是一个生产对象的地方 需要时直接在工厂里面提取一个对象即可;
应用场景:需要频繁的使用一个对象,创建该对象比较耗内存
静态工厂:
//发送消息服务的接口
public interface MsgSend {
public void send();
}
//发送邮件
public class EamilSender implements MsgSend {
@Override
public void send() {
System.out.println("发送邮件消息");
}
}
// 发送短信
public class TeleSender implements MsgSend{
@Override
public void send() {
System.out.println("发送短信消息");
}
}
// 工厂类
public class MsgFactory {
public static EamilSender getEamilSender(){
return new EamilSender();
}
public static TeleSender getTeleSender(){
return new TeleSender();
}
public static void main(String[] args) {
// 测试
MsgFactory.getEamilSender().send();
MsgFactory.getTeleSender().send();
}
}
单例模式:好处 保证在jvm中只有一个该对象的实例存在;
对于一些大型的对象创建时很消耗内存;省去了new的炒作;
有些类如交易所的核心交易引擎,控制着交易流程,如果该类可以创建多个的话,
系统完全乱了。(比如一个军队出现了多个司令员同时指挥,肯定会乱成一团),所以只有使用单例模式,才能保证核心交易服务器独立控制整个流程。
public class SingleTon {
// 私有的静态实例 防止被引用,赋值null 目的是实现延迟加载
private static SingleTon instance = null;
// 私有的构造方法 防止被实例化
private SingleTon() {
}
// 方法上的同步锁 保证线程安全 加了同步锁性能降低
public static synchronized SingleTon getSingTon() {
if (instance == null) {
return new SingleTon();
}
return instance;
}
// synchronized 只需要锁住new 对象的这一步
public static SingleTon getSingTon1() {
if (instance == null) {
synchronized (instance) {
instance= new SingleTon();
}
}
return instance;
}
}
建造者模式:与工厂模式类似,不同的地方就是 工厂模式创建的是单品,建造者模式创建的是多个单品
public class Builder {
private static List<MsgSend>list= new ArrayList<>();
public static void produceTele(int count){
for (int i = 0; i < count; i++) {
list.add(new TeleSender());
}
}
public static void produceEamil(int count){
for (int i = 0; i < count; i++) {
list.add(new EamilSender());
}
}
public static void main(String[] args) {
Builder.produceEamil(10);
Builder.list.get(0).send();
Builder.produceTele(1);
Builder.list.get(0).send();
}
}
阅读全文
0 0
- java设计模式----创建型
- java设计模式之创建型模式
- JAVA设计模式一 创建型模式
- JAVA设计模式-2-创建型模式
- Java设计模式-创建型模式
- Java设计模式之创建型模式
- Java 设计模式 创建型模式 + 案例
- java设计模式-创建型模式
- java设计模式之创建型模式
- Java设计模式之创建型模式
- Java设计模式(24)总结:创建型设计模式
- JAVA设计模式(二)-创建型
- Java设计模式——创建型
- Java设计模式——创建型
- 创建型设计模式---JAVA Singleton模式(单身模式)
- 创建型设计模式---JAVA Singleton模式(单身模式)
- JAVA设计模式创建型模式之建造模式
- JAVA设计模式创建型模式之原型模式
- leetCode-Remove Duplicates from Sorted Array II
- 使用 CSS 去掉 iPhone 网页上按钮的超大圆角以及文本框圆角默认样式
- EOJ 2536 求和
- Commands out of sync; you can't run this command now
- 参考
- java设计模式----创建型
- python学习三--列表
- Pytorch Transfer learning
- 计算圆的面积和周长
- Java性能优化入门
- csdn markdown编辑器使用说明
- shell脚本---字符串操作
- String str; str=str.substring()
- LeetCode小白菜笔记[9]:Remove Element