设计模式
试着奔跑的菜鸟
路漫漫其修远兮
展开
-
单例设计模式
最近看了《大话设计模式》这本书,想在博客中记下以加深自己的印象。 单例模式概述 顾名思义,单例指的是:操作的类只能生成一个实例。 应用场景:网站的计数器,日志文件应用,数据库线程池等。 而在单例模式中,又分为饿汉单例模式和懒汉单例模式。以下便通过代码展示出其区别。 饿汉单例模式 我们在通过Java获取一个对象时,一般是通过new调用类的构造函数生成,而当我们需要控制该类单例时,就需要将构造...原创 2018-10-03 15:06:58 · 92 阅读 · 0 评论 -
模板方法模式
模板方法模式概述 将重复的,可复用的代码抽离出来,降低代码的重复率。 UML 一个简单的示例:在学校的人员分为老师和学生,老师和学生每天做的相同的事情有早读,吃中饭,吃晚饭,而做不同的事情则在休息时间和去不同的宿舍楼休息。 模板类: package com.template; public abstract class HighSchoolCrew { /** * 日...原创 2019-04-12 00:08:12 · 95 阅读 · 0 评论 -
原型模式
原型模式概述 某些特定的时候,我们需要同一个类生成多个相同的对象,或者是基于一个对象生成一个复制对象,并再对复制对象进行修改,这时候就可以使用到原型模式。 UML 一个简单的示例: package com.prototype; public class Customer implements Cloneable { private String name; private ...原创 2018-12-09 00:39:27 · 133 阅读 · 1 评论 -
装饰模式
装饰器模式也称为包装模式,适用于在不改变原有类的情况下,增强类对象的功能原创 2019-12-29 11:08:08 · 85 阅读 · 0 评论 -
代理模式
代理模式概述 客户端不能直接操作B类(目标类),需要通过A类(代理类)调用B类的实例方法来完成最终的逻辑。其中A类和B类需要继承同一父级或者同一接口 UML图 一个简单的示例: // 客户端操作类和实际操作类的接口(两个类都实现这个接口) package com.proxy; public interface Subject { public void request(); } ...原创 2018-12-02 20:48:28 · 152 阅读 · 0 评论 -
工厂方法模式
工厂方法模式概述 有一个抽象类(接口),负责抽象出某个产品线(类),每多出一个产品,则继承该产品线(类或实现接口),创建一个新的类,由此每次多出一个产品的时候,无需操作原有类的内容,只需要新建一个类继承原产品线(实现接口)即可。 以下我们仍然以一个简单的计算器作为例子 定义每个运算逻辑 //运算方法接口 public interface Operator { public int ...原创 2018-10-21 16:34:06 · 89 阅读 · 0 评论 -
简单工厂模式
简单工厂模式概述 当我们需要根据不同的逻辑创建不同的运算逻辑,而这些逻辑又是同属一个种类下的,此时就可以将判断逻辑放入一个类中,由该类提供入口参数,调用不同的逻辑对象返回相对应的结果。 以下我们就以一个简单的计算器作为例子 不使用工厂模式的实现方法 public class TestMain { public static void main(String[] args) { ...原创 2018-10-20 00:16:49 · 120 阅读 · 0 评论 -
设计模式-面向对象设计原则
通过阅读《大话设计模式》并记录以下设计原则 单一职责原则 就一个类而言,应该仅有一个引起它变化的原因。 开闭原则 软件实体应该可扩展,但是不可修改。 对于扩展是开放的,而对于修改是关闭的。 依赖倒转原则 高层模型不应该依赖底层模块。两个都应该依赖于抽象 抽象不应该依赖细节,细节应该依赖抽象。 里氏代换原则 子类必须能够替换掉它们的父类型 迪米特法则 如果两个...原创 2018-10-03 15:41:37 · 180 阅读 · 0 评论 -
建造者模式
概述 当复杂的构建过程通常不变,改变的只是内部的实现算法和业务逻辑时使用; 将复杂的构建过程和具体的内部实现相分离,使得构建过程公用化。 UML 结构 产品:需要被建造的目标; 抽象建造者:规划好建造者类的任务,如需要实现A项任务,B项任务和C项任务,需要返回指定产品; 具体建造者:具体实现每项任务,如怎样实现A项任务,B项任务和C项任务; 指挥者:指挥完成任务的顺序和方式,如先完成A...原创 2019-06-29 01:34:13 · 81 阅读 · 0 评论