常用的软件设计模式的Java实现——让编程从野生到飞起_野生技术协会_科技_bilibili_哔哩哔哩 https://www.bilibili.com/video/av7596511/
-
常用的软件设计模式之工厂模式
2018-10-18 14:47:20工厂模式是最常用的软件设计模式之一,工厂模式属于创建型的设计模式。它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象...工厂模式(Factory Pattern)
工厂模式是最常用的软件设计模式之一,工厂模式属于创建型的设计模式。它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。
-
意图
工厂模式的意图在于他的创建过程延迟到子类中去实现。工厂模式定义一个接口,让子类自己决定实例化哪一个工厂类。 -
关键代码
创建过程在子类中执行。
3.例子
图形-圆形、正方形、长方形public interface shape { public void draw(); } public class Circle implements shape{ @Override public void draw() { System.out.println("I draw a Circle!"); } } public class Square implements shape{ @Override public void draw() { System.out.println("I draw a Square!"); } } public class Rectangle implements shape{ @Override public void draw() { System.out.println("I draw a Rectangle!"); } } public static void main(String[] args) { ShapeFactory shapeFactory = new ShapeFactory(); shape shape1 = shapeFactory.getShape("Circle"); shape1.draw(); }
输出: I draw a Circle!
4. 优缺点:
优点:1、一个调用者想创建一个对象,只要知道其名称就可以了。 2、扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以。 3、屏蔽产品的具体实现,调用者只关心产品的接口。
缺点:每次增加一个产品时,都需要增加一个具体类和对象实现工厂,使得系统中类的个数成倍增加,在一定程度上增加了系统的复杂度,同时也增加了系统具体类的依赖。这并不是什么好事 -
-
常用的软件设计模式的Java实现——让编程从野生到飞起
2017-10-01 20:08:00常用的软件设计模式的Java实现——让编程从野生到飞起_野生技术协会_科技_bilibili_哔哩哔哩 https://www.bilibili.com/video/av7596511/ 转载于:https://www.cnblogs.com/startnow/p/7617709.html...转载于:https://www.cnblogs.com/startnow/p/7617709.html
-
常用的软件设计模式(一)单例模式
2018-09-27 15:50:18单例模式:即一个类只有一个实例,在类里自己创建自己的实例。 优点: (1)单例模式会阻止其他对象实例化其自己的单例对象的副本,从而确保所有对象都访问唯一实例。 (2)因为类控制了实例化过程,所以类可以...单例模式:即一个类只有一个实例,在类里自己创建自己的实例。
优点:
(1)单例模式会阻止其他对象实例化其自己的单例对象的副本,从而确保所有对象都访问唯一实例。
(2)因为类控制了实例化过程,所以类可以灵活更改实例化过程。尤其是在C++中,每次new都要delete,而是用单例模式可以避免忘记delete造成的内存泄漏,只在本类的内部delete实例就可以了
(3)方便对实例进行管理,减少重复的代码,减少内存开销
缺点:
(1)应为内部实例化的对象为静态全局变量,因此没有接口,不能继承
(2)与单一职责原则(这个之后会做详细介绍)冲突,一个类应该只关心内部逻辑,而不关心外面怎么样来实例化。
该模式可以应用在很多编程语言上,这里以C#为例
//单例模式的一般实现 public class TxtManager { //私有对象记录唯一实例 private static TxtManager instance; //让构造函数为 private,这样该类就不会被实例化 private TxtManager(){} //获取唯一可用的对象的公有方法 public static TxtManager getInstance() { if(null == instance) { instance = new TxtManager(); } return instance; } } //调用 public class SingleDemo { //编译时错误:构造函数 SingleObject() 是不可见的 //SingleObject object = new SingleObject(); //获取唯一可用的对象 TxtManager object = TxtManager.getInstance(); }
-
常用的软件设计模式(二)简单工厂模式
2018-10-16 11:39:55刚参加工作的时候,丝毫没有面向对象的思想,所有分支都使用一堆的if...else...,现在回头看以前的代码,着实low。但是只要一心想着进步的人,一定是会总结和反省的,为什么以前的代码出现bug这么难维护,功能扩展...刚参加工作的时候,丝毫没有面向对象的思想,所有分支都使用一堆的if...else...,现在回头看以前的代码,着实low。但是只要一心想着进步的人,一定是会总结和反省的,为什么以前的代码出现bug这么难维护,功能扩展那么难,代码难得到复用,过了段时间连自己写的代码都不知道什么意思。都说女孩子逻辑思维比不上男孩子,工作几年并没这种感觉,区别在于总结和分析罢了,只要比别人多一点耐心,多一点总结,一年之后就会发现那些和你同一起点的人已经远远被你甩在后面,不废话了,今天大猪蹄:简单工厂模式,告别眼花缭乱的if...else。
简单工厂模式:顾名思义,最少有一个生产产品的机器存在的工厂,有了这个工厂,当你需要某一对象时,传入一个正确的参数,就可以获取你所需要的对象,而无需知道其创建细节
优点:把分支封装在工厂类里,让工厂类判断用户需要什么对象,然后创建出什么对象,不用把分支代码开发出来,模块清晰化,各个部分各司其职
缺点:依然需要在工厂类的添加分支语句只是把if...else...改成了switch...case...,在添加新的产品时,既需要添加新的产品类,也需要修改工厂类的代码,这里就显得耦合性较高,不过这个问题也是有办法解决的,这个留到后面章节再讲
写一个特别简单的例子,客户需要根据名字获取不同类型的水果,如果是刚毕业的我,一定会写成下面这样:
static void Main(string[] args) { Console.Write("请输入水果名称:"); string fruitName = Console.ReadLine; switch (fruitName) { case "Apple"://苹果 Console.Write("你要的苹果\t"); break; case "Banana": //香蕉 Console.Write("你要的香蕉\t"); break; default: Console.Write("这里没有你要的水果\t"); break; } }
简单工厂模式设计如下,包含以下几个类,用户类、工厂类、抽象产品类、具体产品类
//抽象产品类 public class FruitType { public virtual void ShowFruit(); } //苹果类 Class Apple:FruitType { public override void ShowFruit() { Console.Write("你要的苹果\n\t"); } } //香蕉类 Class Banana:FruitType { public override void ShowFruit() { Console.Write("你要的香蕉\n\t"); } } //工厂类 public class FruitFactory { public static FruitType CreateFruit(string fruit) { FruitType fruitType = null; switch(fruitType) { case "apple": fruitType = new Apple(); break; case "banana": fruitType = new Banana(); break; } return fruitType; } } //客户类 Class Client { FruitType fruitType; fruitType = FruitFactory.CreateFruit("apple"); fruitType.ShowFruit(); }
-
常用设计模式总结
2019-07-31 19:13:12设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,是可复用面向对象软件的基础。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 ... -
常用的设计模式
2018-11-08 20:18:50单例模式是一种常用的软件设计模式。 在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。 应用场景... -
最常用的设计模式
2018-04-21 01:38:52单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。应用场景:... -
C# 常用的设计模式之单例模式
2018-08-29 10:58:45一、引言 最近在看设计模式,同时在学习过程中也查看了... 单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实... -
Java常用的设计模式
2019-01-10 20:39:50单例模式是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。比如在某个服务器中,该服务器的配置... -
软件常用设计原则和设计模式
2020-11-28 15:51:13常用设计原则和设计模式 常用的设计原则 软件开发的流程 需求分析文档、概要设计文档、详细设计文档、编码和测试、安装和调试、维护和升级 常用的设计原则 开闭原则(Open Close Principle) 对扩展开放对修改关闭,... -
Java常用的设计模式之单例模式
2018-08-17 23:02:48Singleton(单例模式):是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类只有一个实例,即一个类只有一个对象实例。主要有两种模式:饿汉... -
开发中常用的设计模式
2017-04-06 17:29:30单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例,在单例模式中,又分为懒汉式和饿汉式,其特点为: 1、这个类只能有一个实例 ... -
java常用设计_java常用设计模式
2021-03-01 07:20:20单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。应用场景:... -
常用的6种设计模式
2018-07-21 09:34:06单例模式是一种常用的软件设计模式。 在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。 应用... -
常用的JavaScript设计模式
2018-03-24 11:39:58什么是设计模式百度百科: 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过...设计模式是软件工程的基石脉络,如同大厦的结构一样。 实际情况: 设计模式绝对不是纸上谈兵的知识,光看书就以为... -
软件开发常用设计模式
2021-02-19 13:47:51设计模式(Design pattern):是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验 的总结 基本分类 创建型模式:单例设计模式、工厂方法模式、抽象工厂模式、… 结构型模式:装饰器模式、代理模式、…... -
常用软件架构设计模式介绍
2015-02-09 15:59:05分层架构是使用最多的架构模式,通过分层使各个层的职责更加明确,通过定义的接口使各层之间通讯,上层使用下层提供的服务。分层分为:严格意义上的分层,一般意义的分层。严格意义的分层是n+1层使用n层的服务。而... -
iOS常用设计模式——单例设计模式
2015-03-30 17:47:16ARC环境创建单例模式的基本步骤基本概念单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问在IOS中使用单例... -
JS常用设计模式
2020-09-13 18:54:13单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的一个类只有一个实例。即一个类只有一个对象实例。 var Single = (function(){ var... -
常用软件设计模式(五)组合模式
2018-10-18 11:24:26组合模式:将对象组合成树形结构以表示“部分 -整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。 优点: 组合模式使得客户端代码可以一致地处理对象和对象容器,无需关系处理的单个... -
常用软件设计模式(七)桥接模式
2018-10-19 10:55:16桥接模式:将抽象部分与实现部分分离,使它们...缺点:桥接模式的引入会增加系统的理解与设计难度,由于聚合关联关系建立在抽象层,要求开发者针对抽象进行设计与编程。 abstract class Implementor { public abs... -
java常用设计模式
2018-05-08 10:02:00单例模式是一种常用的软件设计模式。 在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。 应用... -
设计模式之常用的设计模式
2018-09-14 22:03:28设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段... -
Java常用设计模式之单例模式
2020-04-02 14:49:22单例模式是一种常用的软件设计模式,使用单例模式,可以保证为一类只生成唯一的实例对象。也就是说,整个程序空间中,该类只存在一个实例对象。 二、先看个问题 我们通常在实例化对象是,通常是通过去new构造器方法... -
常用设计模式之单例设计模式+JAVA实例
2020-11-22 22:02:46**概念:**单例模式,属于创建类型的一种常用的软件设计模式。通过单例模式的方法创建的类在当前进程中只有一个实例(根据需要,也有可能一个线程中属于单例,如:仅线程上下文内使用同一个实例) 正文: 单例模式... -
最常用的的设计模式
2014-04-14 12:19:00最常用的设计模式根据我的经验我把我经常用到的设计模式在这里做个总结,按照我的经验,它们的排序如下:1)单件模式、2)抽象工厂模式和工厂模式、3)适配器模式、4)装饰模式、5)观察者模式、6)外观模式 其他模式目前... -
嵌入式软件设计之设计模式
2019-04-21 17:24:31文章目录前言1.设计模式之适配器模式2.设计模式之单例模式3.设计模式之命令模式 前言 在嵌入式软件设计过程中,...适配器模式是一种比较常用的软件设计模式(有时候叫做包装模式)。它将对象的接口转换成对于客户端(...