网站首页 > 技术文章 正文
设计模式简介
定义:设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。
目的:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。
常见的设计模式的类型
创建型模式
工厂模式(Factory Pattern)
抽象工厂模式(Abstract Factory Pattern)
单例模式(Singleton Pattern)
建造者模式(Builder Pattern)
原型模式(Prototype Pattern)
结构型模式
适配器模式(Adapter Pattern)
桥接模式(Bridge Pattern)
过滤器模式(Filter、Criteria Pattern)
组合模式(Composite Pattern)
装饰器模式(Decorator Pattern)
外观模式(Facade Pattern)
享元模式(Flyweight Pattern)
代理模式(Proxy Pattern)
行为型模式
责任链模式(Chain of Responsibility Pattern)
命令模式(Command Pattern)
解释器模式(Interpreter Pattern)
迭代器模式(Iterator Pattern)
中介者模式(Mediator Pattern)
备忘录模式(Memento Pattern)
观察者模式(Observer Pattern)
状态模式(State Pattern)
空对象模式(Null Object Pattern)
策略模式(Strategy Pattern)
模板模式(Template Pattern)
访问者模式(Visitor Pattern)
从这几种中,我们抽取出一些简单的设计模式。方便大家入门学习
设计模式一:饿汉式
/** * 饿汉式Demo */ public class SingletonSafe { //线程安全的 private static final SingletonSafe singleton = new SingletonSafe(); //限制产生多个对象 private SingletonSafe() { } //通过该方法获得实例对象 public static SingletonSafe getSingletonSafe() { return singleton; } //类中其他方法,尽量是static public static void doSomething() { } }
设计模式二:懒汉式--不安全
/** * 懒汉式demo */ public class SingletonUnSafe { private static SingletonUnSafe singleton = null; //限制产生多个对象 private SingletonUnSafe() { } //通过该方法获得实例对象 public static SingletonUnSafe getSingletonUnSafe() { if (singleton == null) { singleton = new SingletonUnSafe(); } return singleton; } }
注:此模式线程不安全的,如果想要安全的模式,看针对此模式的修改模式
设计模式三:懒汉式--安全
public class SingletonSafe { private static SingletonUnSafe1 s = null; public SingletonUnSafe1() { } //同步函数的Demo public static synchronized SingletonUnSafe1 getInstance(){ if (s == null) { s = new SingletonUnSafe1(); } return s; } //同步代码块的Demo加锁,安全高效 public static SingletonUnSafe1 getInstanceBlock() { if (s == null) { synchronized (SingletonUnSafe1.class) { if (s == null) { s = new SingletonUnSafe1(); } } } return s; } }
猜你喜欢
- 2024-10-01 全面解析45种设计模式(Design pattern)和六大原则
- 2024-10-01 mongoHelper 0.3.9 发布,简化 CRUD操作
- 2024-10-01 JPA 的 Metamodel(jpa格式图片)
- 2024-10-01 设计模式简介(设计模式是干嘛的)
- 2024-10-01 SlideLive网站:如何实现个性化搜索
- 2024-10-01 JPA核心接口EntityManager之API功能详解(三)
- 2024-10-01 使用ElasticSearch快速搭建数据搜索服务
- 2024-10-01 SpringORM最佳实践:SpringData架构与应用
- 2024-10-01 Spring Data JPA 自定义存储库(spring data jpa调用存储过程)
- 2024-10-01 Spring Data之JPA @Query注解(spring+jpa)
- 最近发表
- 标签列表
-
- cmd/c (64)
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- sqlset (64)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- chromepost (65)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- linux删除一个文件夹 (65)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)