设计模式
leo_messi94
这个作者很懒,什么都没留下…
展开
-
设计模式(七)-- 策略模式
举例:方案一:写一个鸭子抽象类,里面有鸭子的一些行为方法,还有鸭子的描述。然后各种不同鸭子实现这个接口。问题:我们在鸭子抽象类中定义了鸭子飞行和游泳方法,但是北京烤鸭或者玩具鸭并不能飞或者游泳,这时候我们就要重写这些方法方案二:使用策略模式解决策略模式定义:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化策略模式体现的设计原则:把变化的代码从不变的代码中分离出来针对接口编程而不是具体类(定义了策略接口)多用原创 2020-07-08 01:56:37 · 150 阅读 · 0 评论 -
设计模式(六)-- 享元模式
举例需求:方案一:问题:方案二:享元模式可以使用享元模式来解决这个问题享元模式:基本介绍:UML图:内部状态和外部状态:享元模式解决网站问题:网站对象接口:public abstract class WebSite { public abstract void use(User user);}网站对象:// 具体网站public class ConcreteWebSite extends WebSite{ private String typ原创 2020-07-08 01:55:35 · 205 阅读 · 0 评论 -
设计模式(五) -- 工厂模式
工厂方法模式定义:工厂方法(Factory Method)模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。可以看到工厂方法模式中定义了一个工厂接口,而具体的创建工作推迟到具体的工厂类,它是对简单工厂模式中的工厂类进一步抽象化,从而产生一个工厂类的抽象和实现体系,从而弥补简单工厂模式对修改开放的原创 2020-07-07 22:00:17 · 110 阅读 · 0 评论 -
设计模式(四) -- 装饰者模式
定义装饰者模式:动态的将新功能附加到对象上。在对象功能扩展方面,它比继承更有弹性,装饰者模式也体现了开闭原则。即:在不必改变原类文件和使用继承的情况下,动态的扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。简言之装饰者模式的简单实现方式:装饰者中存放一个被装饰对象的引用(属性)。接口A,被装饰对象:一个实现类B,即被装饰对象。装饰者抽象类:装饰者抽象类C实现A,并在其中存放一个A的引用。具体装饰类:具体的装饰者实现类D继承C,完成对被装饰对象的装饰。举例需求:原创 2020-07-07 18:35:40 · 134 阅读 · 0 评论 -
设计模式(三)-- 代理模式
1.基本介绍代理模式:为一个对象提供一个替身,以控制对这个对象的访问。即通过代理对象访问目标对象。这样做的好处是:可以在目标对象实现的基础上,增强额外的功能能操作,即扩展目标对象的功能。被代理的对象可以是远程对象、创建开销大的对象或需要安全控制的对象代理模式有不同的形式,主要有三种静态代理动态代理(JDK代理)Cglib代理(可以在内存动态的创建对象,而不需要实现接口)2.静态代理2.1 基本介绍:静态代理在使用时,需要定义接口或者父类,被代理对象(即目标对象)与代理对象一起实现原创 2020-07-05 15:07:04 · 687 阅读 · 0 评论 -
设计模式 -- 概述
学习设计模式的目的:代码重用性可读性可扩展性可靠性使程序呈现高内聚,低耦合的特性设计模式七大原则1.单一职责原则对类来说,即一个类只负责一项职责。假如类A负责2个不同的职责:职责1和职责2,当职责1因为需求而发生改变时,可能造成职责2执行错误。所以需要将类A的粒度分解为A1,A2。1.1 注意事项和细节降低类的复杂度,一个类只负责一项职责提高类的可读性,可维护性降低变更引起的分线通常情况下,我们应当遵守单一职责原则,只有逻辑足够简单,才可以在代码级违反单一职责原则;只有类中原创 2020-07-02 18:29:59 · 113 阅读 · 0 评论 -
设计模式(二)-- 单例模式
有时候在项目中,某些对象我们只需要一个,如缓存、配置等。对于这类对象我们只能有一个实例,如果出现多个,那么就会出问题。定义:作为对象的创建模式,单例模式确保其某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类。单例模式有以下特点:单例类只能有一个实例单例类必须自己创建自己的唯一实例单例类必须给其他所有对象提供这一实例(提供获得实例的方法)优缺点:优点系统内存中该类只存在一个对象,节省了系统资源,对于一些需要频繁创建销毁的对象,使用单例模式可以提高系统性能。原创 2020-05-26 17:57:24 · 141 阅读 · 0 评论 -
设计模式(一):简单工厂
首先要说明的是简单工厂并不是GOF的23个模式之一。需求:模拟一个计算器的实现,输入一个数,再输入加减乘中的一个运算符,再输入第二个数字,运算结果返回简单实现: public static void main(String args[]) { try { Scanner scanner = new Scanner(System.in); System.out.println("请输入第一个数"); String strA = scanner.n原创 2020-05-26 01:31:48 · 78 阅读 · 0 评论