设计模式
文章平均质量分 51
张先生和他的金毛
每一个不曾起舞的日子,都是对生命的辜负。
展开
-
设计模式——观察者模式原理及代码实现
一、简介 观察者模式(Observer),又加发布订阅模式(Public/Subscribe),定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。二、结构图三、代码实现1.Subjectpublic interface Subject { List<Observer> observers = new ArrayList<>(); d...原创 2021-07-25 12:24:23 · 585 阅读 · 0 评论 -
设计模式——迭代器模式原理及代码实现
一、简介 迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中的各个元素,而不暴露该对象的内部表示。二、结构图三、代码实现1.Iteratorpublic interface Iterator<T> { T first(); T next(); boolean isDone(); T currentItem();}2.ConcreteIteratorpublic class ConcreteIte...原创 2021-07-18 10:02:46 · 306 阅读 · 1 评论 -
设计模式——命令模式原理及代码实现
一、简介命名模式(Command),将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。简而言之就是将命令调用者和命令执行者通过命令对象解耦。二、结构图三、代码实现1. Commandpublic abstract class Command { protected Receiver receiver; public Command(Receiver receiver) { thi原创 2021-06-27 18:44:26 · 400 阅读 · 1 评论 -
设计模式——模板模式原理及代码实现
一、简介模板模式(Template),又叫模板方法模式,定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。简单来说,模板方法就是在抽象类或接口中定义方法的模板,具体的实现交由具体的子类。二、结构三、代码实现1.AbstractClasspublic abstract class AbstractClass { public abstract void operation1(); publ原创 2021-06-22 20:36:40 · 421 阅读 · 0 评论 -
设计模式——策略模式原理及代码实现
一、简介策略模式(Strategy):它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。用接口或抽象类封装算法,具体的实现方式由子类来实现。使用对象引用接口、抽象类的对象,具体的实现由实现类决定,后面的子类的更换,也不会对使用类有影响。二、结构图三、代码实现1. Strategy,算法封装类public interface Strategy { void method();}2. ConcreteStrategy原创 2021-06-21 22:11:02 · 260 阅读 · 0 评论 -
设计模式——代理模式原理及代码实现
一、简介代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问。二、结构原创 2021-06-10 20:31:22 · 257 阅读 · 0 评论 -
设计模式——访问者模式原理及代码实现
一、简介代理模式(Proxy):为其他对象提供一种代理以控制这个对象的访问。二、结构图原创 2021-07-18 08:28:33 · 305 阅读 · 1 评论 -
设计模式——享元模式原理及代码实现
一、简介享元模式(Flyweight),运用共享技术有效地支持大量细粒度的对象。二、结构图三、原创 2021-05-30 17:56:31 · 200 阅读 · 0 评论 -
设计模式——职责链模式原理及代码实现
一、简介职责链模式(Chain of Responsibility):使多个对象有机会处理请求,从而避免请求的发送者和接受者之前的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理为止。职责链模式通常每个接受者都包含对另一个接受者的引用。如果一个对象不能处理该请求,那它会把相同的请求传递给下一个接受者,以此类推。适用于多个对象可以处理一个请求的场景,例如:多级请求、审批流程、拦截器等。二、结构图Handler:抽象的处理者,定义一个处理请求的接口,同时还有另外原创 2021-05-01 21:41:39 · 224 阅读 · 1 评论 -
设计模式——外观模式原理及代码实现
一、简介外观模式(Facade),为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一系统更加容易使用。二、结构图三、代码实现1.Facadepublic class Facade { private SubSystemOne systemOne; private SubSystemTwo systemTwo; private SubSystemThree systemThree; private SubSystemFo原创 2021-04-28 06:44:39 · 326 阅读 · 0 评论 -
设计模式——组合模式原理及代码实现
一、简介组合模式(Composite Pattern),将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。在对象关系之间存在上下层级结构时使用,可以忽略组合对象和单个对象的不同,统一地使用组合结构中的所有对象。基本对象可以被组合成更复杂的组合对象,而这个组合对象又可以被组合,这样就可以递归下去。二、结构图Component:组合中的对象声明接口,在适当情况下,实现所有类公共接口的默认行为。声明一个接口用于访问和管理Compone原创 2021-04-21 22:26:35 · 571 阅读 · 0 评论 -
设计模式——装饰者模式及代码实现
一、简介装饰者模式(Decorator),动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。装饰模式是为已有功能动态地添加更多功能的一种方式。它把每个要装饰的功能放在单独的类中,并让这个类包装它所要装饰的对象,因此,当需要执行特殊行为时,客户代码就可以在运行时根据需要有选择地、按顺序地使用装饰模式功能包装对象。二、结构图Component: 被装饰的接口,可以给这些对象动态的添加职责。ConcreteComponent:被装饰的实现类,定义了具体的对象,原创 2021-04-18 23:03:02 · 320 阅读 · 0 评论 -
设计模式——桥接模式原理及代码实现
一、简介桥接模式(Bridge),将抽象部分与它的实现部分分离,使它们都可以独立地变化。实现系统可能有多角度分类,每一种分类都有可能变化,那么就把这种多角度分离出来让它们单独变化,减少它们之间的耦合。当有多个维度划分关联时,尽量用合成/聚合的关系,尽可能少的使用继承关系,减少它们之间的耦合。因为继承关系是强依赖,当父类有变化时,子类就要随之变化。合成/聚合复用原则(CARP):尽量使用合成/聚合,尽量不要使用类继承。二、结构图三、代码实现Implementor:public原创 2021-04-13 22:58:36 · 501 阅读 · 0 评论 -
设计模式——适配器模式原理及源码实现
一、简介适配器模式(Adapter):将一个类的接口转化成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类一起工作。通俗讲,就是将原本不能直接调用的接口,通过新的接口或类进行封装后,提供新的接口在内部进行转化,从而使用之前的接口。实现方式分为三类:类适配器模式、对象适配器模式、接口适配器模式。三者的区别在与Adapter和Adaptee的关系以哪种方式进行关联。二、结构图三、代码实现实现:将220V电压转换为5V电压对手机充电。1、A原创 2021-04-12 22:57:41 · 276 阅读 · 0 评论 -
设计模式——建造者模式原理及实现
一、简介建造者模式(Builder Pattern),又叫生成器模式,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。通俗来讲,就是将对象的构建过程抽象出来,可用不同的实现类来实现对象的不同特性,达到构建和表示分离的目的。建造者模式主要用于创建一些复杂的对象,这些对象内部构建间的建造顺序通常是稳定的,但对象内部的构建通常面临着复杂的变化。二、结构图Product(产品类):具体的产品对象。Builder(抽象建造者):为了创建Product对象的各个部件指定原创 2021-04-11 21:21:43 · 427 阅读 · 1 评论 -
设计模式——原型模式、浅拷贝、深拷贝代码实现
原型模式:一个对象提供方法复制本身对象,从而生成新的对象。浅拷贝和深拷贝:说到原型模式,就不得不说浅拷贝和深拷贝。在对象进行复制时,同时会将源对象中的元素复制到新的对象中,其中元素分为值类型和引用类型。浅拷贝和深拷贝的共同点在于都将值类型的元素复制到新对象中;区别点在于浅拷贝只是将复制了源对象中元素的地址,也就说新对象中的引用类元素和源对象的元素指的是同一个对象。而深拷贝是将引用类的元素重新在创建一个对象,新对象和源对象的引用类元素是不同的对象。浅拷贝代码实现:public cla原创 2021-04-11 10:19:04 · 178 阅读 · 0 评论 -
设计模式——简单工厂、静态工厂、工厂方法、抽象工厂模式源码
工厂模式:将实例化对象的代码提取出来,放到一个类中统一管理和维护,达到和主项目依赖关系的解耦,从而提高项目的扩展性和维护性。简单工厂模式:工厂类中包含了必要的逻辑,有工厂类中的选择条件来判断实例化相关的类。接口类:public interface Operation { Long operate(long a, long b);}实现类:public class AddOperation implements Operation{ @Override.原创 2021-04-10 23:02:30 · 382 阅读 · 2 评论 -
单例模式八种常用实现(附源码)
单例模式:采用一定的方法保证在整个软件系统中只会生成一个实例。1. 饿汉式-静态常量public class SingleTonTest01 { private final static SingleTonTest01 test01 = new SingleTonTest01(); private SingleTonTest01() { } public static SingleTonTest01 getInstance() { return原创 2021-03-19 07:21:32 · 149 阅读 · 1 评论 -
设计模式概述
一、概述:设计模式的本质是提供软件的维护性、通用性和扩展性,并降低软件的复杂性。 某类问题的通用解决方案,设计模式代表了最佳实践。模式不是代码,而是某类问题的通用解决方案。 设计模式不局限与某种语言。 二、目的:代码重用性 可读性 扩展性 可靠性 使程序呈现高内聚、低耦合的特性三、七大原则:单一职责原则:一个类应该只负责一项职责。接口隔离原则:尽量将接口方法分离成单独的功能,避免出现一个接口类中多个功能不同的方法。依赖倒转原则:高层模块不应该依赖底层模块,二原创 2021-03-18 23:14:18 · 143 阅读 · 0 评论