工厂模式:工厂模式提供了一种创建对象的方式。首先,定义抽象的对象(产品)以及具体对象(产品)细节,其次,使用抽象工厂提供的公共借口来完成对象的创建。 UML: 代码案例: class Product { public: Product() {} virtual ~Product() {} virtual double GetResult() = 0; void
在我们写完一份软件之后,我们往往需要对这份软件进行后续的更新与维护,同时我们也希望在后续的软件编写的过程中利用到之前编写的内容,进行软件的服用。因此,本片聚焦于几种面向可复用性和可维护性的设计模式,介绍设计的几种方法。一、创建型模式: 1.工厂方法模式: 工厂方法
后台: java JavaSE:基础语法、io流,网络编程,设计模式,JavaBean,枚举,注解,XML解析,JDBC,线程 JavaEE:JavaWeb(servlet、Jsp、JavaEmail) 框架:Spring,SpringMVC,SpringJDBC,SpringAOP,Mybatis 前端: HTML,CSS,JavaScript,jQuery,Vue,AntDesign 数据库: MYSQL:DDL(
在工厂模式的大类中,具体有三个小的子类模式,包含简单工厂模式、工厂方法模式、抽象工厂模式。其中简单工厂模式并没有放到23种设计模式中,但是对于理解另外两种设计模式有重要作用。这篇文章中,主要介绍一下简单工厂模式: 一、描述 简单工厂模式有一个具体的工厂类,可以生成多个不
Builder 模式,又叫建造者模式、构建者模式或生成器模式。 概述 当要设置属性的属性时,我们既可以通过构造函数设置,也可以通过 set() 方法设置。 建造者模式解决的问题: 简化构造函数的参数列表 当构造参数存在制约关系时,建造者模式可以在 build() 方法进行校验 当对象是不可变时,建造
MVC设计模式 MVC是模型(Model)、视图(View)、控制器(Controller)的简写,是一种软件设计规范。 是将业务逻辑、数据、显示分离的方法组织代码。 MVC主要作用是降低了视图与业务逻辑间的双偶合。 MVC不是一种设计模式,MVC是一种架构模式,不同的MVC存在差异 M(模型):数据模型,
1.什么是MVCMVC是一种开发设计模型,使用MVC可以将开发工作进行分层、分模块处理。2.MVC有什么优势MVC的分层设计,可以让各个部分的开发单独开来,减少重复的代码。3.MVC包含什么内容顾名思义,MVC包括三个模块:Model(模型层)、View(视图层)、Controller(控制层)。与用户的交互顺序是:用户通过视
内部类 在类的内部定义的类就是内部类 内部类分为:成员内部类、局部内部类、静态内部类、匿名内部类 1、成员内部类 定义:在一个类中除了可以定义成员变量、成员方法,还可以定义类,这样的类被称作成员内部类。 格式: Class 外部类{ Class 内部类{ } } 访问特点: (1)内部类可以直接
允许在一个类的内部定义类,这样的类称作内部类。 内部类分为: 成员内部类 局部内部类 静态内部类 匿名内部类 访问特点: 内部类可以直接访问外部类的成员,包括私有成员。 外部类要访问内部类的成员必须要建立内部类的对象 内部类对象的格式: 外部类名.内部类名
接口是一种特殊的抽象类,它不能包含普通方法。 格式 修饰符 interface 接口名 { public static final 常量类型 常量名 = 常量值 public abstract 方法返回值类型 方法名 } 关系: 接口和接口之间的关系 继承的关系 可以多继承 接口和类之间的
代理模式:简单来说,就是因为某些原因需要给某对象提供一个代理以控制对该对象的访问。举个实际的例子,一个人不想租房,请了中介去帮忙租房,这就是一种代理模式。 结构: 抽象主题(Subject):通过接口或抽象类声明真实主题和代理对象实现的业务方法,比如在租房的例子中就是人; 真实主题(Real
接口是一种特殊的抽象类,他不能包含普通方法 格式 修饰符 interface 接口名 { public static final 常量类型 常量名 = 常量值 public abstract 方法返回值类型 方法名 } 与定义类不同的是,在定义接口的时候不再使用class关键字 而是interface关键字来声
1.解决的问题: 在软件开发中实现一个算法时,整体步骤很固定、通用,这些步骤已经在父类中写好了。但是某些部分易变,易变部分可以抽象出来,共不同的子类实现。这就是一种模板设计。 2.举例 abstract class Template{//模板 //计算某段代码执行所需要花费的时间 public void spendT
状态模式简介 状态模式是一种常用的面向对象设计模式,多见于对象的状态会影响对象行为的场景。本篇以汽车加速、升/减档为例,介绍状态模式在实际开发中的实现思路以及注意事项。 状态模式的实现思路 根据状态机的5要素(状态、动作、事件、迁移、条件),画出目标对象的状态迁移图,和/或
学习之前,我们先来了解一下IO模型: ①同步阻塞IO(Blocking IO):即传统的IO模型。 ②同步非阻塞IO(Non-blocking IO):默认创建的socket都是阻塞的,非阻塞IO要求socket被设置为NONBLOCK。注意这里所说的NIO并非Java的NIO(New IO)库。 ③多路复用IO(IO Multiplexing):即经典的Reactor设计模式,有时也
性能问题表象就是应用系统运行慢,影响客户体验。要解决性能问题也无非就是找到原因然后根据原因对症下药。本文从这两方面概述Java应用性能分析与调优方法论。 一、定位性能差的原因 1、借助工具:YourKit (类似的还有JProfiler,个人倾向YourKit),YourKit 是收费的,但是对于聪明的你来说
策略模式:封装的是做一件事不同的执行方式,本质上依旧是多态 package strategy; public interface Comparator<T> { int compare(T o1, T o2); } package strategy; public class DogComparator implements Comparator<Dog>{ @Override public int compa
☺ 对于工厂模式,个人学习需要掌握 注意答案的重点标黑了。对于工厂模式、建造者模式,掌握,我下面这几点就很棒棒。 一、工厂模式 1、什么是工厂模式:【关键字factory】 答:创建对象时,不直接new,而是交由一个工厂类/工厂接口的工厂方法负责创建。 2、工厂模式的意义 答:将实例化对象
原理 .NET 中的事件基于委托模型。 委托模型遵循观观察者设计模式,使订阅者能够向提供方注册并接收相关通知。 观察者设计模式 在 .NET 中,通过实现泛型 System.IObservable 和 System.IObserver 接口来应用观察者设计模式。 泛型类型参数表示提供通知信息的类型。 观察者是实现
学习路线1:python的23种设计模式学习路线2:python23种设计模式学习路线3:python常见的设计模式
最近学习了面向可复用性和可维护性的设计模式,对于其中的工厂方法模式、适配器模式很容易理解,工厂方法在我看来就是把创建新对象的功能委派出去,适配器模式就是在中间新建一个方法将客户端输入的指令转换为我们所写的代码所能接受的输入,还有后面讲到的策略模式,策略模式
设计模式常用的七大原则有: 1) 单一职责原则 2) 接口隔离原则 3) 依赖倒转原则 : 抽象不依赖细节,细节依赖抽象,相对于细节的多变性,抽象要稳定的多 继承给程序带来的侵入性,可移植性低,耦合性,父类修改对子类影响太大 4) 里氏替换原则 : ? 5) 开闭原则 ocp : 模块和函数应该对扩展开放(
一·单例模式 保证内存中只有一个实例 方法1:用private修饰构造方法 package singleton; public class Mgr01 { private static final Mgr01 INSTANCE = new Mgr01(); private Mgr01(){}; public static Mgr01 getInstance(){return INSTANCE;}; public void
1 package com.Chapter01.Abstract; 2 3 abstract public class template { //抽象类 摸版设计 4 public abstract void job();//抽象方法; 5 public void calculate(){ 6 //开始时间 7 long start = System.currentTimeMillis(); 8 //
一、原则: 要求在软件复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现。 二、和继承复用的区别 合成复用和继承复用在类的关系有差别,一个是继承,一个是组合关系。我认为在实际使用时,可以根据业务场景来区别使用,这样不会很乱。 继承复用的