设计模式
文章平均质量分 59
进击的中国学渣
努力也许改变不了一切,但能改变许多
展开
-
工场设计模式和抽象工厂设计模式
工厂设计模式是一种最简单的设计模式,简单的说我们需要使用一个对象的时候不是由我们直接new出这个对象,而是通过一个工厂类去获得这个对象。 public class Factory{ public Object getObject(){ return new Object(1);原创 2017-01-13 16:14:42 · 335 阅读 · 0 评论 -
观察者设计模式
使用场景:当有一个对象的状态改变,一群对象都要跟着更新时,就适合用观察者设计模式。 介绍:观察者设计模式需要一个被观察者对象,一群观察者。所以整个设计模式最关键的就是在被观察者对象里注入一个存放观察者对象的容器。 实现: 1 我们需要实现一个被观察者import java.util.ArrayList;import java.util.List;public class Subject {原创 2017-11-24 18:49:16 · 290 阅读 · 0 评论 -
java反射学习(结合工厂方法)
java反射的应用什么是反射? JAVA反射机制是就是运行的状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。反射的应用场景? 在讲反射的应用场景之前,先来讨论一个开发当中碰到的场景。一步步深入,最后就会发现反射对于代码的质量会有一个质的提升。假设我们的数原创 2017-09-03 18:27:44 · 279 阅读 · 0 评论 -
单例模式
其实很早之前就明白了单例,但是因为在大学的时候课程设计都用不到单例,所以仅仅是知道单例,并没有仔细地思考过它的用途。今天是16年11月30号,今天因为项目需要需要写一个单例。在自己需要用单例的时候,为了程序的性能,自然要选择最优的单例。下面就各种单例说一说它们的优缺点。 1 懒汉模式public class Singleton{ private static Sin原创 2017-09-27 11:31:52 · 219 阅读 · 0 评论 -
职责链设计模式
职责链设计模式职责链设计模式:使多个对象都有机会处理请求,从而避免了请求发送者和接受者之间的耦合关系。将这样的对象连成一条链,并沿着这条链传递请求,直到有一个对象处理这里请求为止。 代码如下:抽象出一个处理请求的接口package com.wsy.chain;public interface Handler { public void doHanler(String request);原创 2017-09-03 18:55:41 · 202 阅读 · 0 评论 -
适配器模式
适配器模式我的理解是为了让原本不能一起工作的类能够一起工作。有很多时候我们原来的类不能满足现在的需求。为了复用之前的代码就可以使用适配器模式。适配器模式分为2种:1 类适配器 2 对象适配器 首先说下类适配器模式,就是利用继承的方式来复用之前需要适配的对象。如下图: Adaptee中的method1()方法是我们已有的方法,也就是我们希望复用的代码。我们通过继承的方式实现Ad原创 2017-08-13 12:56:30 · 268 阅读 · 0 评论 -
代理设计模式
代理设计模式是开发当中用的最多的设计模式之一,比如Spring的AOP就是用动态代理实现的。这篇博客由浅到深,先讲解静态代理。然后通过静态代理的不足引出动态代理,在介绍动态代理的同时介绍java反射的用法。我觉得关系图是讲解设计模式最好的方式,所以先上图,如下图: 如上图:在代理类的内部有一个被代理类的引用,代理类和被代理类同时实现相同的接口。然后代理类使用被代理类对象的方法与其他对象进行交互原创 2017-07-22 22:04:01 · 245 阅读 · 0 评论 -
策略设计模式
网上有许多关于策略设计模式的介绍,其实在策略设计模式就是一句话将执行策略封装成对象,不同的具体策略对象会对相同的输入产生不同的结果。前半句是策略设计模式,后半句就是多态。可以说策略设计模式离不开多态。首先简单地讲一下策略设计模式。 我觉得uml图是讲解设计模式最好的工具,直接上图。 策略设计模式如图无非就是通过一个上下文来调用具体策略的方法,代码如下:原创 2017-07-08 14:43:18 · 243 阅读 · 0 评论 -
创建者设计模式
创建者设计模式是创建型设计模式,是一种很好理解的设计模式。就是告诉我们如何创建复杂对象的。 将一个复杂对象的构建过程和表示分离,使得相同的创建过程可以创建不同的表示。这句话可能不是很好理解,因为我在看创建者设计模式的时候,碰到这句话我也觉得不好理解。下面我举一个例子解释一下。我们去kfc的时候会买套餐,一份套餐可以有不同的组合,但是能够进行的组合的鸡翅,可乐,汉堡是不变的。通过对原创 2017-01-13 16:46:50 · 477 阅读 · 0 评论 -
java动态代理使用
先定义一个待实现的接口public interface Subject { public String sayHello(String name); public String sayGoodBye();}再定义一个接口实现类 public class RealSubject implements Subject { @Override public String原创 2017-12-18 20:49:37 · 291 阅读 · 0 评论