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