设计模式(一、创建型模式)

目录:

  • 设计模式的六大原则
  • 工厂模式(Factory Pattern)
  • 抽象工厂模式(Abstract Factory Pattern)
  • 单例模式(Singleton Pattern)
  • 建造者模式(Builder Pattern)
  • 原型模式(Prototype Pattern)

本文参考:菜鸟教程,https://www.runoob.com/design-pattern/design-pattern-tutorial.html

设计模式的六大原则

1、开闭原则(Open Close Principle):开闭原则的意思是,对扩展开放,对修改关闭

2、里氏代换原则(Liskov Substitution Principle):是面向对象设计的基本原则之一,任何基类可以出现的地方,子类一定可以出现

3、依赖倒转原则(Dependence Inversion Principle):这个原则是开闭原则的基础,针对接口编程,依赖于抽象而不依赖于具体

4、接口隔离原则(Interface Segregation Principle)使用多个隔离的接口,比使用单个接口要好,降低类之间的耦合度。它强调降低依赖,降低耦合。

5、迪米特法则,又称最少知道原则(Demeter Principle):一个实体应当尽量少地与其他实体之间发生相互作用,使得系统功能模块相对独立

6、合成复用原则(Composite Reuse Principle):尽量使用合成/聚合的方式,而不是使用继承

工厂模式(Factory Pattern)

解决问题: 通过工厂类来解耦客户与产品,让客户使用产品时而不需要了解如何的创建这个产品

应用实例:类似于我们要去买东西,这个场景是我们只需要买东西,而不需要知道这个东西是怎样生产的,怎样销售的,我们只需要买就可以了。而某宝、某东就类似于一个工厂,我们只需要告诉工厂我要买什么,工厂就能给我们生产什么,这样就屏蔽了客户与厂商的交流细节,让两端都只需要做自己最该做的那部分。(我们:客户;商品:产品;某宝、某东:工厂类。)

示例:https://github.com/mrjdrs/sign-model.git

抽象工厂模式(Abstract Factory Pattern)

解决问题:工厂产品族的问题。

应用实例:假如我是一个买电子产品的,原来我只买同种类的手机或电脑,别人只要找我买手机或电脑就行了,因为我只有这一种。有一天我丰富了自己的产品我有A类手机、B类手机,A类电脑、B类电脑了,此时用户想买我的产品时不仅要知道自己买手机还要知道自己要买什么品种(假如用户是随便的,不挑(?ω?)),这样无疑增加了用户购买的难度,因为用户只是要一台手机或电脑而已,所以我们需要帮用户选择。(手机、电脑:产品;手机电脑的型号:产品族;我:抽象工厂;我帮用户挑选:具体的工厂)。

示例:https://github.com/mrjdrs/sign-model.git

单例模式(Singleton Pattern)

解决问题:控制实例数目,节省系统资源。

应用实例: 医生看病,病人很多,但始终只有一个医生。(医生:单例类;病人:使用客户端)

示例:https://github.com/mrjdrs/sign-model.git

建议:一般情况下,不建议使用第 1 种和第 2 种懒汉方式,建议使用第 3 种饿汉方式。只有在要明确实现 lazy loading 效果时,才会使用第 5 种登记方式。如果涉及到反序列化创建对象时,可以尝试使用第 6 种枚举方式。如果有其他特殊的需求,可以考虑使用第 4 种双检锁方式。

建造者模式(Builder Pattern)

解决问题:基本部件不会变,而其组合经常变化的时候。

应用实例:去食堂打菜,基本的菜式不变,变化的是本次需吃的菜品。

示例:https://github.com/mrjdrs/sign-model.git

原型模式(Prototype Pattern)

解决问题:通过java.lang.Object#clone解决,创建对象代价比较大时的场景。

应用实例:细胞分裂。

示例:https://github.com/mrjdrs/sign-model.git

原文地址:https://www.cnblogs.com/bzfsdr/p/12118348.html

时间: 2024-10-11 21:36:10

设计模式(一、创建型模式)的相关文章

设计模式之创建型模式(上)

没有总结的学习不算学习,这一个月的学习可谓收获多多啊,接下来与大家分享一下. 一.设计模式的分类 总体来说设计模式分为三大类: 1.创建型模式,共五种. 2.结构型模式,共七种. 3.行为型模式,共十一种. 首先研究创建型模式 二. 概述 创建型模式,就是用来创建对象的模式,抽象了实例化的过程.它帮助一个系统独 立于如何创建.组合和表示它的那些对象. 三. 为什么需要创建型模式 所有的创建型模式都有两个永恒的主旋律: 第一,它们都将系统使用哪些具体类的信息封装起来: 第二,它们隐藏了这些类的实例

设计模式 (创建型模式)

  设计模式 创建型模式 1.创建型模式         创建型模式,包括了5种设计模式,分别是 Singleton (单例模式),Factory(工厂模式),AbstractFactory(抽象工厂模式),Builder(创建者),Prototype(原型) ,创建型模式主要作用就是抽象了实例化过程.他们帮助一个系统独立于如何创建.组合和表示他的那些对象.一个类创建型模式使用继承改变被实例化的类.而一个对象创建型模式将实例化委托给另一个对象. 2.Singleton (单例模式)      单

设计模式系列 - 创建型模式

单例模式 懒汉式,线程不安全. 除非是单线程程序,否则不推荐使用. public class Singleton { private static Singleton instance; private Singleton (){} public static Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return instance; } } 饿汉式,线程安全 当程序总是使用这个

设计模式之创建型模式

一.前言 设计模式应该是在软件工程的背景下进行讨论的,而不是为了设计模式而论设计模式.设计模式是软件工程面向对象设计工作中一个抽象.归纳.总结的过程.软件设计的最高目标和最高准则就是易扩展,易复用,易维护, 灵活性高,高可用,稳定性高一切的设计原则和设计模式最终的目标都是向这个目标靠拢的. 二.面向对象设计六大原则 任何的设计模式都是基于面向对象的特性(抽象.封装.继承.多态)和设计原则进行设计和实现的,是面向对象设计原则的在不同场景下的实现方案. 抽象:抽离变化的部分,引入抽象层,实现具体实现

Java设计模式之创建型模式

创建型模式分为五类:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式 一.工厂方法模式:接口-实现类-工厂类 工厂类的目的是为了产生Sender对象,通过不同的参数传入产生不同的对象. 将工厂类中的工厂方法改为多个工厂方法即为多个工厂方法的设计模式 将工厂类中的工场方法改为static即为静态工厂方法设计模式 二.抽象工厂方法模式:接口-实现类-工厂类 特点是: 工厂类实现某个接口,利于以后扩展,比如可以增加BlueTooth的工厂类. 工厂设计模式是抽象工厂设计模式的一个特例. 三.

设计模式1—创建型模式

模式 在一定环境中解决某一问题的方案,包括三个基本元素--问题,解决方案和环境. 大白话:在一定环境下,用固定套路解决问题. 设计模式(Design pattern) 是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于己于他人于系统都是多赢的:设计模式使代码编制真正工程化:设计模式是软件工程的基石脉络,如同大厦的结构一样. 设计模式的分类(Gang of Four的"DesignPatt

设计模式_创建型模式_简单工厂模式

转载自:http://blog.csdn.net/lovelion  作者:刘伟 简单工厂模式并不属于GoF 23个经典设计模式,但通常将它作为学习其他工厂模式的基础,它的设计思想很简单,其基本流程如下:        首先将需要创建的各种不同对象(例如各种不同的Chart对象)的相关代码封装到不同的类中,这些类称为具体产品类, 而将它们公共的代码进行抽象和提取后封装在一个抽象产品类中,每一个具体产品类都是抽象产品类的子类: 然后提供一个工厂类用于创建各种产品,在工厂类中提供一个创建产品的工厂方

设计模式之“创建型模式”

创建型模式主要分为五大模式,分别为:抽象工厂模式.建造者模式.工厂方法模式.原型模式.单例模式. 抽象工厂模式 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. 一.优点 1.易于交换产品系列. 2.它让具体的创建实例过程与客户端分离. 二.反射 Assembly.Load("程序集名称").CreateInstance("命名空间.类名称")需要在程序顶端写上using System.Reflection;来引用Reflection所有用简单工

设计模式_创建型模式——工厂方法

工厂方法(Factory Method):工厂方法模式属于类的创建型模式.在工厂方法模式中,父类负责定义创建产品对象的工厂接口,而子类则负责生成具体的对象,这样做的目的是将类的实例化操作延迟到子类中完成,即由子类来决定究竟应该实例化哪一个类. abstract Product factoryMethod(String type) abstract:工厂方法是抽象的,依赖子类来处理对象的创建 Product:工厂方法返回一个产品,超类中定义的方法,通常使用到工厂方法的返回值 String:工厂方法

设计模式_创建型模式

创建型模式与对象创建有关. 1. Abstract Factory (抽象工厂) 定义:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. 适用:一个系统要独立于它的产品的创建.组合和表示时. 与工厂模式的区别:工厂模式的一个工厂接口的子类只能实例化一个产品:抽象工厂能实例多个产品. 例子代码: package designModel; // 产品1 interface IProduct1 { } class Product1A implements IProduct1 { }