设计模式之禅
Scarl_Wen
人生是一场单程的旅行
即使有些遗憾
我们也没有从头再来的机会
与其纠结无法改变的过去
不如微笑着珍惜未来
因为生活
没有如果
展开
-
尝试重用现有的同类对象--享元模式
定义:尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。主要用于减少创建对象的数量,以减少内存占用和提高性能。 举个栗子: 现在有一种类:狗子,它有三个属性:颜色、颜值、运动量。有一个获取指定颜色的狗的工厂。这样,就可以定义一个容器,将狗存储起来,根据狗的颜色来获取对象。 1、狗:为了属性全面一点,就设置颜值和运动量为随机值,并重写toString方法。 public class Dog...原创 2020-04-08 22:20:45 · 122 阅读 · 0 评论 -
让一个以上的对象有机会能够处理某个请求--责任链模式
定义:在责任链模式中,很多对象由每一个对象对其下家的引用而接起来形成一条链。请求在这条链上传递,直到链上的某一个对象决定处理此请求。客户并不知道链上的哪一个最终处理这个请求,系统可以在不影响客户端的情况下动态的重新组织链和分配责任。处理者有两个选择:承担责任或者把责任推给下家。一个请求可以最终不被任何接收端对象所接受。 典型案例:Java Web 的 Filter、Spring MVC 的 Dis...原创 2020-04-08 21:57:31 · 234 阅读 · 0 评论 -
用智能设备生产线解读建造者模式
定义:建造者模式又叫生成器模式,是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 话不多说,上本次实现代码类图: 令人头大,那么我们就一步一步来解读QAQ 移动设备模型的抽象类 public abstract class MobilleModel { private ArrayList<String> sequence = new ArrayLi...原创 2020-04-05 22:27:27 · 172 阅读 · 0 评论 -
一个时时刻刻都在用的设计模式------模版方法模式
定义:定义一个操作中的算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。 这个定义看完是不是有点懵,这也叫时时刻刻都在用的设计模式? 说人话环节(coding): 抽象模版 public abstract class AbstractClass { //基本方法 protected abstract void doSome...原创 2020-04-04 21:44:43 · 207 阅读 · 0 评论 -
简单代码实现装饰器模式
定义:装饰模式是一种用于代替继承的技术,无须通过继承增加子类就能扩展对象的新功能。使用对象的关联关系代替继承关系,更加灵活,同时避免类型体系的快速膨胀。那么装饰器的职责就是动态地为一个对象增加新的功能。 装饰器的构造: 1、抽象构件角色 ICar 2、具体的构件角色 Car 3、装饰器角色 SuperCar 4、具体的装饰器角色 FlyCar、WaterCar、AICar 代码实现: 基础接口 p...原创 2020-04-04 18:00:28 · 439 阅读 · 0 评论 -
用航空调度来解读中介者模式(调停者模式)
定义: 定义一个中介对象来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变它们之间的交互。中介者模式又叫调停模式,它是迪米特法则的典型应用。 模式的结构与实现 中介者模式实现的关键是找出“中介者”,下面对它的结构和实现进行分析。 1. 模式的结构 中介者模式包含以下主要角色。 抽象中介者(Mediator)角色:它是中介者的接口,提供了同事对象注册与转发同事对象信息的抽象方法。...原创 2020-04-03 21:08:49 · 578 阅读 · 0 评论 -
常用而通俗易懂的门面模式(外观模式)
定义:外观模式提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。 举个栗子,LOL游戏中有这么一句黑话:“两军交战,不斩乐师”,这个乐师是谁嘞,当然是敲钟牛----哞利斯塔。那么哞利斯塔的看家本领是什么,自然是WQ二连,甚至追个闪,而完成这一系列动作需要以下几步,鼠标左键选中敌方英雄,然后键盘W键释放技能,并迅速键盘Q键。。。这对于手残党(指博主自己QA...原创 2020-04-03 20:21:13 · 163 阅读 · 0 评论 -
抽象工厂模式
抽象工厂模式是一种特殊的“工厂模式” 定义:提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,属于对象创建型模式,是工厂方法模式的升级版,在有多个业务品种、业务分类时,通过抽象工厂模式产生需要的对象是一种非常好的解决方式。 抽象工厂模式包含了几个角色: AbstractFactory:用于声明生成抽象产品的方法 ConcreteFactory:实现了...原创 2020-04-02 22:33:26 · 114 阅读 · 0 评论 -
静态工厂(简单工厂)模式
定义:将对象的创建过程交由专门的对象(工厂)去做,通过给工厂的方法传入不同的参数完成不同对象的创建,或者调用工厂的不同方法创建不同的对象。 举例: 有一个处理器接口,两个类实现了该接口,一个是AMD类,一个是Intel类。有一个处理器生产工厂,根据客户端传入不同的参数或者调用不同的方法返回不同的实现类对象 处理器接口:有一个超频的方法 public interface CPU { void...原创 2020-04-01 22:20:02 · 847 阅读 · 0 评论 -
策略模式
定义:定义算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 定义算法族(超类或接口及其若干实现类) public interface FireBehavior { void fire(); } public class StrongFire implements FireBehavior { public void fire() { ...原创 2020-04-01 21:19:47 · 75 阅读 · 0 评论 -
单例模式
定义:确保一个类只有一个实例,并提供全局访问点。 饿汉模式(公开域,存在内存消耗小问题) public class Singleton1 implements Serializable { // 可供外部通过类名访问 public static final Singleton1 SINGLETON = new Singleton1(); // 防止外部创建对象 private Si...原创 2020-03-31 22:47:12 · 70 阅读 · 0 评论 -
设计模式六原则一法则
设计模式六原则一法则1.单一职责原则(Single Responsibility Principle, SRP)2.接口隔离原则(Interface Segregation Principle, ISP)3.依赖倒转原则(Dependency Inversion Principle, DIP)4.里式替换原则(Liskov Substitution Principle, LSP)5.开闭原则(...原创 2020-03-31 21:48:45 · 240 阅读 · 0 评论