java设计模式浅谈

谈谈你知道的设计模式

设计模式是人们为软件开发中相同表征的问题.
设计模式分为: 创建型模式 结构型模式和行为型模式
创建型模式,是对对象创建过程中的各种问题和解决方案的总结,包括工厂模式(factroy,Abstract Factory) 单例模式(Singleton) 构建器模式,原型模式,
结构型模式,是针对软件设计结构的总结,关注于类,对象继承,组合方式的实现经验. 常见的结构型模型包括巧接模式,适配器模式,装饰者模式 代理模式 组合模式 外观模式 享元模式
行为型模式 从类或者对象直接交互 职责划分等角度总结的模式 .
如 策略模式 解释器模式 命令模式 观察者模式 迭代器模式 模版方法模式 访问者模式.
单例设计模式的目的避免不一致的状态,确保某个类只有一个实例,并且自行实例化向整个系统来提供这个实例.
懒汉式

public class Singleton{
        private static Singleton instance;
        private Singleton(){}
        public static Singleton getInstance(){
        if(instance==null){
        instance=new Singleton();
        }
        return instance;
        }}

饿汉式

public class Singleton{
    //在自己内部定义自己的一个实例,只供内部调用
    private static final Singleton instance = new Singleton();
    private Singleton(){
        //do something
    }
    //这里提供了一个供外部访问本class的静态方法,可以直接访问
    public static Singleton getInstance(){
        return instance;
    }

//单线程环境不存在问题 但是并发场景需要考虑线程安全

public class Singleton{
private static volatile Singleton singleton // 提供可见性表示这个值getInstance是完全初始化后的对象
private Singleton(){}
public class Singleton{
if(singleton==null){
synchoronsized(Singleton.class){
if(singleton==null){
Singleton=new Singleton()[
}
}
}return singleton
}
“`

spring框架如何在api设计中使用设计模式?
BeanFactroy和ApplicationContext应用了工厂模式
在bean的创建过程中,spring为不同的scope定义的时候 ,提供了单例和原型等模型实现.
AOP(面向切面编程)领域用到了代理模式,装饰器模式,适配器模式等
APO的目的和能力 在不同模块特定阶段做一些事情,累屎日志或者全局性异常处理,性能监控甚至事务处理等.

这里写图片描述

各种事件监听器 是观察者模式的典型应用
类似JdbcTemple等则是应用了模版模式.
简单工厂模式解决的问题是如何去实例化一个合适的对象。
简单工厂模式的核心思想就是:有一个专门的类来负责创建实例的过程。
具体来说,把产品看着是一系列的类的集合,这些类是由某个抽象类或者接口派生出来的一个对象树。而工厂类用来产生一个合适的对象来满足客户的要求。
如果简单工厂模式所涉及到的具体产品之间没有共同的逻辑,那么我们就可以使用接口来扮演抽象产品的角色;如果具体产品之间有功能的逻辑或,我们就必须把这些共同的东西提取出来,放在一个抽象类中,然后让具体产品继承抽象类。为实现更好复用的目的,共同的东西总是应该抽象出来的。
本人Java新手一枚 欢迎各位大神指点,希望大家提出自己心中觉得比较好的设计模式以及运用场景共同学习.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值