![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java/设计模式与重构
worn.xiao
这个作者很懒,什么都没留下…
展开
-
【设计模式】代理模式(结构型)
代理模式:代理模式给某一个对象提供一个代理对象,并由代理对象控制对源对象的引用。代理就是一个人或一个机构代表另一个人或者一个机构采取行动。某些情况下,客户不想或者不能够直接引用一个对象,代理对象可以在客户和目标对象直接起到中介的作用。客户端分辨不出代理主题对象与真实主题对象。代理模式可以并不知道真正的被代理对象,而仅仅持有一个被代理对象的接口,这时候代理对象不能够创建被代理对象,被代理对象必须...原创 2016-11-19 00:06:43 · 807 阅读 · 0 评论 -
【设计模式】装饰者模式(结构型)
装饰者模式 动态的给一些对象添加一些职能,就增加功能来说,装饰者比生成子类更灵活。模型图 代码public abstract class Component { public abstract void Operation();}public class ConcreteComponet extends Component { @Overri...原创 2016-10-10 22:43:22 · 393 阅读 · 0 评论 -
【设计模式】观察者模式(行为型)
观察者模式 定义了一种一对多的依赖关系,让多个观察者,同时监听某一主题对象,这个主题对象在发生变化时,对通知所有观察者对象,使他能够自动更新。模型图 代码 java已经集成了观察者模式了,所以如下observable类相当于主题Subject类,我们可以直接通过继承自observable类来完成相应的concreteSubjectpublic class...原创 2016-10-09 23:24:39 · 291 阅读 · 0 评论 -
【设计模式】策略模式(行为型)
策略模式 定义一组算法家族,分别封装起来。让它们之间可以互相替换,此模式让算法的变化不会影响到使用算法的客户。模型结构图 代码public class Test { public static void main(String[] args) { Context context=new Context(ConcreteStrategyC.class); c...原创 2016-10-08 22:32:34 · 336 阅读 · 0 评论 -
【重构】-重复代码(duplicated Code)
重构一 duplicated Code(重复代码)场景演义:议题一 同一个类的两个函数有相同代码片段重构手法(Extract Method)把一段代码组织在一起并独立,放进一个独立函数中,并让函数名称解析该函数的用途。演义讲解public static void main(String[] args) { A(); System.out.pri原创 2018-02-03 21:43:40 · 4225 阅读 · 0 评论 -
【重构】Long Method(过长函数)
场景演义场景一 函数过长,难以理解,不知道做什么,如何做重构手法Extract Method(抽取公共代码)场景二 函数内有大量参数与临时变量重构手法Replace Temp with Query(以查询取代临时变量)程序以一个临时变量保存某一表达式的运行结果,将这个表达式提炼到一个独立的函数中,将这个临时变量所有的引用点替换为对新函数的调用。此后新函数就可被其他函数使用。范例:重构前double...转载 2018-02-07 22:34:01 · 2695 阅读 · 0 评论 -
【设计模式】原型模式
原型模式 用原型模式指定创建对象的种类,并且通过拷贝这些原型创建新的对象。模型图代码public interface Prototype extends Cloneable {}public class ConcreatePrototype1 implements Prototype{ private ConcreatePrototype2 Con...原创 2018-10-12 15:01:39 · 495 阅读 · 0 评论 -
【设计模式】建造者模式(创建型)
建造者模式 将一个对象的构建与它的表示分离,使得同样的构建过程创建出不同的表示。模型图 代码public abstract class Builder { public abstract void BuilderPartA(); public abstract void BuilderPartB(); public abstract Product getRes...原创 2018-10-15 11:25:17 · 113 阅读 · 0 评论 -
【设计模式】备忘录模式
备忘录模式 在不破坏封装性的前提下,补货一个对象的内部状态,并在改对象之外保存这个状态,这样就可以将现在的状态恢复到原先保存的状态。模型图 代码public class Originator { private String state="on"; private Memento memento=null; public Memento getMemento...原创 2018-10-17 15:13:21 · 162 阅读 · 0 评论 -
【设计模式】桥接模式
桥接模式:抽象部分与实现部分分离,使他们可以独立变化模型图代码public abstract class Abstraction { @SuppressWarnings("unused") protected Implementor implementor; public Abstraction(Implementor implementor) { this.imple...原创 2018-11-27 12:03:00 · 169 阅读 · 0 评论 -
【设计模式】简单工厂(创建型)
简单工厂模式创建型模式,用于对象的创建,它不属于23种设计模式。它是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。 适用场景1工厂类负责创建的对象比较少2客户只知道传入工厂类的参数,对于如何创建对象(逻辑)不关心3由于简单工厂很容易违反高内聚责任分配原则,因此一般只在很简单的情况下应用 结构类型优缺点优点:简单工厂模式主要用于隔...原创 2016-10-15 17:11:36 · 366 阅读 · 0 评论 -
【设计模式】工厂方法模式(创建型)
工厂方法模式 定义一个创建对象的接口,让子类来决定实例化哪一个类。工厂方法使一个类的实例化延迟到子类。模型图代码public abstract class Product { public abstract void show();}public class ConcreteProduct extends Product { @Override p...原创 2016-10-15 18:40:27 · 360 阅读 · 0 评论 -
【设计模式】状态模式(行为型)
状态模式 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 适用性 1.一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为。 2.一个操作中含有庞大的多分支的条件语句,且这些分支依赖于该对象的状态。 这个状态通常用一个或多个枚举常量表示。 通常,有...原创 2016-10-30 23:43:14 · 343 阅读 · 0 评论 -
【设计模式】组合模式(结构型)
组合模式 将对象组合成树形的结构形式表示“整体-部分”的层次结构,组合模式使得单个对象和组合对象的使用具有一致性。模型图 代码public abstract class Component { protected String name; public Component(String name) { this.name=name; }...原创 2016-10-23 11:20:09 · 297 阅读 · 0 评论 -
【设计模式】迭代器模式(行为型)
迭代器模式 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 适用性 1.访问一个聚合对象的内容而无需暴露它的内部表示。 2.支持对聚合对象的多种遍历。 3.为遍历不同的聚合结构提供一个统一的接口(即,支持多态迭代)。类结构图 head_first结构图: 系统...原创 2016-10-23 09:38:53 · 372 阅读 · 0 评论 -
【设计模式】模版方法模式(行为型)
模板方法模式 定义一个操作中的算法的骨架。而将一些步走延迟到子类中。模板方法可以师子类不改变算法的结构。重定义算法的某些特定步走。模型图 代码public abstract class AbstractClass { public long TemplateMethod(){ long A=primitiveMethod1(); long B=primit...原创 2016-10-19 21:13:41 · 373 阅读 · 0 评论 -
【设计模式】外观模式(结构型)
外观模式 为子系统中的一组接口,提供一个一致的界面,此模式定义了一个高层接口,这一接口使得子系统更加容易使用。模型图 代码public class Facade { private SubSystemOne one; private SubSystemTwo two; private SubSystemThree three; private SubS...原创 2016-10-17 23:36:50 · 336 阅读 · 0 评论 -
【设计模式】适配器模式(结构型)
适配器模式 将一类接口转化成客户喜欢的另一类接口,使得原本不能在一起工作的那些类,可以在一起工作。模型图 代码public abstract class Target { public abstract void request();}public class Adapter extends Target { private Adaptee adapt...原创 2016-10-17 23:23:33 · 302 阅读 · 0 评论 -
命令模式(行为型)
命令模式 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。 适用性 1.抽象出待执行的动作以参数化某个对象。 2.在不同的时刻指定、排列和执行请求。 3.支持取消操作。 4.支持修改日志,这样当系统崩溃时,修改可以被重做一遍。 5.用构建在原语操作上的高层操作构造一个系原创 2016-10-16 10:28:45 · 305 阅读 · 0 评论 -
【设计模式】单例模式(创建型)
单例模式 保证一个类仅有一个实例,并提供一个访问它的全局访问点。模型图代码public class Singleton { public static Singleton singleton=null; private Singleton(){ } public static Singleton getInstance(...原创 2016-10-15 20:35:38 · 398 阅读 · 0 评论 -
【设计模式】抽象工厂模式(创建型)
抽象工程 提供一系列创建相关或者相互依赖的对象接口,而无需指定对象的具体类。模型图 代码public interface AbstractFactory { public AbstractProductA createProductA(); public AbstractProductB createProductB();}public ...原创 2016-10-15 19:51:10 · 314 阅读 · 0 评论 -
设计模式的七大原则
转自 https://blog.csdn.net/juoduomade/article/details/85012490概述对于面向对象软件系统的设计而言,在支持可维护性的同时,提高系统的可复用性是一个至关重要的问题,如何同时提高一个软件系统的可维护性和可复用性是面向对象设计需要解决的核心问题之一。在面向对象设计中,可维护性的复用是以设计原则为基础的。每一个原则都蕴含一些面向对象设计的思...转载 2019-10-06 12:21:06 · 138 阅读 · 0 评论