![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
张孟浩_jay
分享Java后端、MySQL、数据结构、计算机基础、算法、并发编程技术!欢迎朋友们交流关注,共同进步!
展开
-
面向对象分析过程
1、将需求拆分成若干个功能点2、将职责相近的功能点合并到一个类中3、根据功能点设计类的属性和方法4、根据组合、继承、实现等关系来组织类之间的关系原创 2022-03-02 21:18:34 · 899 阅读 · 0 评论 -
组合和继承
继承有很多好处:1、多态2、代码复用继承的坏处1、如果继承的层数过多,会造成代码可读性降低,不好调试,不好维护2、如果一个类中的子类具有不同的行为,比如同属于鸟类,鸵鸟不会飞,而燕子会飞,这样的话,就无法在基类中定义fly()方法了。也就无法多态和代码复用了。对于第2个坏处,我们可以利用组合+接口的方式来达到多态和代码复用的效果。interface flyable{ void fly();}class TuoNiao implements flyable{ void fly(){原创 2022-03-02 18:55:51 · 336 阅读 · 0 评论 -
面向接口编程
接口是一种抽象的能力,可以用来解耦。当对应的代码不稳定也就是经常变动的时候,最好使用接口编程。在接口中声明对应的函数,然后对应的实现类来重写端口。这样的话,当代码需要变动的时候,我们可以直接新增一个实现类来重写接口,这样的话就避免了对之前实现类的修改。相较于直接修改原来的代码,接口编程有以下好处:原来的代码有可能还会使用,这个时候需要新建一个类来完成新的需求。在调用方我们需要修改的代码就多了。如果接口编程的话,我们利用多态的话,只需要修改对应的实现类就可以了要求:1、接口函数的名字一定要抽象,屏原创 2022-03-02 18:26:20 · 348 阅读 · 0 评论 -
Reactor设计模式
Reactor模式简介Reactor模式是一个基于事件分发的模式。主要用于IO多路复用。当一个事件到来的时候,Reactor根据事件的不同类型,通知对应的handler处理。Reactor详解本文拿 网络IO多路复用来举例,我们都知道IO多路复用可以提高服务器的并发处理能力!IO多路复用就是一个线程可以监控多个socket,减少线程的创建。当服务器连接数过多的时候,IO多路复用能够减少线程数,也可以减少线程上线切换导致的资源浪费。但是socket分为两种情况:1、负责新建连接的socket2原创 2021-11-21 16:46:09 · 1005 阅读 · 0 评论 -
职责链模式
职责链设计模式简介当一个对象需要经过一系列的操作或者检验的时候,这个时候职责链设计模式就很奏效了。比如对一个请求进行一系列的处理的时候,职责链就很好用职责链设计模式详解package chain;public class Chain { private Handler head = null; private Handler tail = null; public void addHandler(Handler handler){ if (head =原创 2021-11-17 20:17:55 · 209 阅读 · 0 评论 -
策略设计模式
策略设计模式简介策略模式用来解决代码中大量的if-else的情况。对这类情况定义一个接口来规定对应的基本策略,然后对每一种实际情况都实现一种特定的类来具体实现对应的逻辑。策略模式通过查表+接口多态的方式来代替对应的if-else。策略模式详解public interface OrderService{ void call(Order o);}public class OrderServiceImpl1 implements OrderService{ @Override public v原创 2021-11-17 19:08:26 · 111 阅读 · 0 评论 -
观察者模式
观察者模式简介观察者模式是一种 多个观察者 观察 一个被观察者的 模式。当被观察者的状态改变的时候,会依次通知对应的观察者。观察者模式详解public interface Subject{ void register(Observer observer); void unregister(Observer observer); void notifyObservers(Message message);}public interface Observer{ void update(原创 2021-11-17 16:09:04 · 106 阅读 · 0 评论 -
原型设计模式
原型模式简介原型模式也是创建对象的一种方式。如果需要创建的对象的初始化比较耗时,并且对应的属性取值都差不多的时候,可以考虑通过原型模式来创建。原型模式是通过直接拷贝其他对象来创建对象,然后更改对应的属性来得到新的对象深拷贝和浅拷贝原型模式涉及到了对象的拷贝,对象的拷贝分为浅拷贝和深拷贝。浅拷贝浅拷贝的时候,对于引用类型的属性,拷贝的时候不会新生成对象,而是拷贝对象的地址。两个对象中的属性的引用是共用一个对象的。深拷贝深拷贝的时候,对于引用类型的属性,会为其创建新的对象。两个对象中的属性原创 2021-11-16 19:13:18 · 234 阅读 · 0 评论 -
建造者设计模式
建造者模式简介建造者模式也是用来创建对象的,有以下使用场景:1、创建的对象的参数较多,并且允许不同的排列组合当参数过多,并且允许排列组合的话,我们需要写大量的很长的参数列表的构造函数,看起来比较混乱。当然这种情况,可以用set()方法来解决。但是set()无法解决第二个问题2、参数之间有约束关系,比如某个参数的值要大于另一个参数的值当参数之间存在约束关系的时候,set()是无法保证参数之间的约束的,除非要求用户按照一定的次序来使用set()建造者模式详解假设我们现在需要创建一个商品类对象pu原创 2021-11-15 22:36:19 · 399 阅读 · 1 评论 -
工厂设计模式
工厂设计模式简介我们都知道现实世界中,工厂的作用就是批量制造东西的。在设计模式中,工厂设计模式也是用来批量制造物体的,这个物体就是对象。工厂设计模式的身影常常在框架中使用,比如著名的spring,就是使用的工厂模式来生成和管理对象的。常用的工厂模式有两种:简单工厂和工厂方法。简单工厂public class FoodFactory{ public static Food createFood(String className){ if(className.equals("fruit")){原创 2021-11-15 21:54:32 · 228 阅读 · 0 评论 -
单例设计模式
使用场景单例模式的作用是 保证一个类在JVM中只能存在一个对象,防止多余的对象浪费JVM的内存创建方式1、饿汉式public class Singleton{ private static Singleton singleton = new Singleton(); //必须设置为private,防止通过构造函数来创建对象 private Singleton(){ } public static Singleton getInstance(){ return singleton;原创 2021-11-14 21:17:34 · 409 阅读 · 0 评论