1. 概述

随着做项目增多不可避免地接触到了设计模式,现在各大文档中呈现的设计模式总共有23种,实际上使用中的肯定比23种多,为了让自己深刻理解设计模式,本博决定自己手写这些设计模式,便于在项目中灵活使用。

设计模式又称为GOF(gang of four四个作者的情切称呼),读完GOF印象最深的就是“解耦”二字,就像“狂人日记”满篇充斥着两个字“吃人”,GOF满篇蕴含着两个字“解耦”。实际上这也是GOF存在的意义,将软件模块化,尽可能减少模块之间的联系,实现软件功能模块最大限度的重用性,减少程序员重复做轮子的工作;本博认为,设计模式的出现是将工业流水线工作的模式和建筑设计思想引入了软件生产中,给编程过程中遇到的问题提供了若干种设计方式,将软件生产过程分解为多个模块,每个模块间互不相干,但模块的综合却能完成复杂的工作;这就使设计模式的意义所在。

2. 23种设计模式

    做事情要讲究目的和意义,否则就是在浪费时间,上面探讨了GOF的存在目的和意义,现在多说无益,直接上模式:

2.1 工厂方法模式

    工厂方法模式将生成实例的功能给工厂子类,每个子类都只返回单一的实例对象。
<pre name="code" class="java">public abstract class Animal{}
public Dog extends Animal{}
public Cat extends Animal{}
public abstract class AnimalFactory{public abstract Animal  getAnimal();
}
public class CatFactory implements AnimalFactory{public Animal getAnimal(){System.out.println("cat");return new Cat();}
}
public class DogFactory implements Animal{public Animal getAnimal(){System.out.println("dog");return new Dog();}
}
public class TestFactory{public static void main(){AnimalFactory af = new CatFactory();Animal cat = af.getAnimal();}
}

2.2 抽象工厂模式

    抽象工厂模式是将具体生成类实例的功能让子类来完成,子类能完成多个实例的生成。
<pre name="code" class="java">public abstract class Animal{};
public class Cat extends Animal{};
public class Dog extends Animal{};
public abstract class Fruit{};
public class Apple extends Fruit{};
public class Orange extends Fruit{};
public abstract class Factory{public abstract Animal getCat();public abstract Animal getDog();public abstract Fruit getApple();public abstract Fruit getOrange();
}
public class AnimalFactory extends Factory{public Animal getCat(){return new Cat();}public Animal getDog(){return new Dog();}
}
public class FruitFactory extends Factory{public Fruit getApple(){return Apple();}public Fruit getOrange(){return Orange();}
}
public class TestFactory{public static void main(){Factory af = new AnimalFactory();Animal cat = af.getCat();Animal dog = af.getDog();Factory ff = new FruitFactory();Fruit apple = ff.getApple();...}
}

2.3 单例模式singleton

2.4 原型模式prototype

2.5 建造模式builder

2.6 适配器模式adapter

2.7 代理模式proxy

2.8 门面模式facet

2.9 组合模式composite

2.10 装饰器模式decorator

2.11 桥连模式bridge

2.12 共享元模式flyweight

2.13 命令模式command

2.14 观察者模式observer

2.15 模板模式template

2.16 策略模式strategy

2.17 责任链模式chain of responsibility

2.18 中介模式mediator

2.19 状态模式state

2.20 memento模式

2.21 解释器模式interpreter

2.22 访问者模式visitor

2.23 迭代器模式iterator

目录先写这儿晚上更新 :)



23种设计模式及简单代码相关推荐

  1. 23 种设计模式详解 代码实现全解析

    设计模式 Design Pattern 是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结,使用设计模式是为了可重用代码.让代码更容易被他人理解并且保证代码可靠性. 在<设计模式 ...

  2. 23种 设计模式 java 实例代码

    23种设计模式 文章目录 *23种设计模式* 一.设计模式的6/7 大原则: 1).UML类图定义 2).UML类图详解 1. 名称详解 **依赖(Dependency)** **泛化(General ...

  3. 23种设计模式的简单介绍

    文章目录 23种设计模式 概要 0.简单工厂设计模式 多方法简单工厂 静态方法简单工厂 创造型 单例模式(**Singleton**) 懒汉模式:(以时间换空间) 饿汉模式 (以空间换时间) 工厂方法 ...

  4. 23种设计模式详解(代码讲解、持续更新)

    目录 设计模式分类 设计模式的六大原则 创建型模式 1.工厂方法模式(Factory Method) 2.建造者模式(Builder Pattern(常用.常见)) 行为型模式 模板模式(Templa ...

  5. 23种设计模式之简单工厂模式,工厂方法模式,抽象工厂模式详解

    工厂模式详解 1. 简单工厂模式 1.1 需求分析 1.2 使用传统方式实现 1.2.1 类图 1.2.2 代码实现 1.2.2.1 新建pizza抽象类 1.2.2.2 希腊披萨实现类 1.2.2. ...

  6. 细数23种设计模式以及Java代码实现

    设计模式是在软件开发中,经过验证的,用于解决在特定环境下.重复出现的.特定问题的解决方案. 创建型 创建型模式是抽象对象实例化的过程,用于帮助创建对象的实例. 工厂模式 简单工厂 描述 定义:提供一个 ...

  7. 23种设计模式(java代码实现案例)

    设计模式 创造型.结构型.行为型 创建型: 1.(类)工厂方法(Factory Method) 意图 ​ 定义一个用于创建对象的接口,让子类决定实例化哪一个类.使一个类的实例化延迟到了子类 适用性 ​ ...

  8. 23种设计模式之简单工厂

    简单工厂模式描述的是,通过类的继承关系,父类(工厂类)与子类(产品类),调用父类中的方法,实际干活儿的是子类中的方法:封装需求的不确定性,做出通用的编程,下面以常用的计算器为例: 最容易想到的写法是: ...

  9. 23种设计模式之-----简单工厂(静态工厂)模式(SimpleFactory Pattern)

    这里引用 https://www.kailing.pub/PdfReader/web/viewer.html?file=24DesignPattern 讲解设计模式一文中的例子. 这个例子很形象而且通 ...

最新文章

  1. web 服务发布注意事项
  2. 字符串逆序的几种方法
  3. java实现linkstring,【JAVA SE基础篇】32.String类入门
  4. dhs手术是什么意思_#下颌角手术# #磨骨瘦脸# 下颌角手术多少钱?
  5. vs中四点画矩形的算法_中考热点,初高中衔接之倒角利器四点共圆
  6. JAVA对接支付宝支付(超详细,一看就懂)
  7. android log 如何获取double类型后小数点的值_【ES6基础】Symbol介绍:独一无二的值...
  8. linux 查找文件 mysql数据库_Linux下MySQL数据库目录多了好多文件
  9. 语义解析KB-QA的方法框架
  10. (概论)java web后台开发跟手机APP后台开发有什么不同
  11. android 获取本地视频文件以及缩略图
  12. 浅谈股价预测模型:分类树算法
  13. opencv打开mp4文件_OpenCV 实现播放本地mp4视频或远程服务mp4视频
  14. AirSim无人机仿真——手柄操作
  15. 求树的直径算法以及证明
  16. GLES2.0中文API-glVertexAttrib
  17. 深入分析ClassLoader
  18. itertools.groupby与pandas.groupby的异同
  19. 如何发现数据库连接泄露
  20. Hot 100(三)

热门文章

  1. ubuntu 18.04 三五分钟即可一键安装ROS系统(亲测有效)
  2. 2020应届毕业生,Android春招总结,已入职小米,进阶加薪全靠它
  3. mysql 有数据就修改,无数据则新增
  4. 计算机操作系统实验指导linux版,操作系统实验指导书(linux版).doc
  5. 如何通过电影截图找到电影
  6. Linux中IPsec的实现--(实例)
  7. 电子小制作:一个电子节拍器
  8. 电脑系统更新后无法连接服务器,win10 系统更新后,SQL数据库无法连接
  9. 反恐精英的服务器存在哪个文件夹,反恐精英地图放在哪里?CS1.6地图放置位置详细介绍...
  10. SpaceBuilder2.0 beta正式上线