代理模式

代理模式里面必须要知道的事情

帅比萌擦擦* 提交于 2019-12-01 00:59:20
代理模式里面必须要知道的事情 代理模式的 UML: // 抽象出需要代理的功能 public interface Printable { public abstract void setPrinterName(String name); public abstract String getPrinterName(); public abstract void print(String str); } // 代理模式的核心思想就是用的时候再创建,很多框架的拦截器实现就是动态代理的实现,有机会会补充 public class PrinterProxy implements Printable{ private String name; private Printer real; public PrinterProxy(String name){ this.name=name; } //多线程的问题 @Override public synchronized void setPrinterName(String name) { if(real!=null){ real.setPrinterName(name); } this.name=name; } @Override public String getPrinterName() { return name; } @Override

Java设计模式-代理模式

喜夏-厌秋 提交于 2019-11-30 21:10:30
本篇文章来学习一下代理模式。 代理模式从字面上讲“代理”是通过中间人来完成的,譬如我想去拿快递,但是现在我很忙没空,请小明去拿一下,这个小明就充当代理的角色。接下来我们从软件方面来详细了解一下代理模式。 代理模式 需要注意的有下面几点: 用户只关心接口功能,而不在乎谁提供了功能。上图中接口是 Subject。 接口真正实现者是上图的 RealSubject,但是它不与用户直接接触,而是通过代理。 代理就是上图中的 ProxySubject,由于它实现了 Subject 接口,所以它能够直接与用户接触。 用户调用 Proxy 的时候,Proxy 内部调用了 RealSubject。所以,Proxy 是中介者,它可以增强 RealSubject 操作。 代理模板代码: Subject接口,提供功能。 123 public interface { void visit();} RealSubject,但是它不与用户直接接触,而是通过代理。 123456 public class RealSubject implements { public void visit() { System.out.println("实现了Subject接口,不与用户直接交流,通过代理!"); }} ProxySubject,由于它实现了 Subject 接口,所以它能够直接与用户接触。

Java设计模式-代理模式

余生长醉 提交于 2019-11-30 20:59:32
本篇文章来学习一下代理模式。 代理模式从字面上讲“代理”是通过中间人来完成的,譬如我想去拿快递,但是现在我很忙没空,请小明去拿一下,这个小明就充当代理的角色。接下来我们从软件方面来详细了解一下代理模式。 代理模式 需要注意的有下面几点: 用户只关心接口功能,而不在乎谁提供了功能。上图中接口是 Subject。 接口真正实现者是上图的 RealSubject,但是它不与用户直接接触,而是通过代理。 代理就是上图中的 ProxySubject,由于它实现了 Subject 接口,所以它能够直接与用户接触。 用户调用 Proxy 的时候,Proxy 内部调用了 RealSubject。所以,Proxy 是中介者,它可以增强 RealSubject 操作。 代理模板代码: Subject接口,提供功能。 123 public interface { void visit();} RealSubject,但是它不与用户直接接触,而是通过代理。 123456 public class RealSubject implements { public void visit() { System.out.println("实现了Subject接口,不与用户直接交流,通过代理!"); }} ProxySubject,由于它实现了 Subject 接口,所以它能够直接与用户接触。

nginx正向代理配置

可紊 提交于 2019-11-30 20:44:50
一、前言 正向代理功能比较简单,但是原生nginx不支持https代理,如果访问https网站,会报错。 # nginx代理不支持http CONNECT方法: curl: (56) Received HTTP code 400 from proxy after CONNECT 为了实现对https代理的支持,需要对原有nginx源码打补丁,就可以让nginx支持CONNECT模式了。 https://github.com/chobits/ngx_http_proxy_connect_module#build-openresty 二、下载并安装openresty shell> yum -y install lua-devel shell> wget http://dlsw.91donkey.com/software/source/nginx/openresty-1.15.8.1.tar.gz shell> wget http://dlsw.91donkey.com/software/source/nginx/nginx-http-concat_20161124.tgz && tar zxf nginx-http-concat_20161124.tgz shell> wget http://dlsw.91donkey.com/software/source/nginx/ngx

Javascript设计模式详解

一世执手 提交于 2019-11-30 17:03:07
Javascript设计模式详解: https://www.cnblogs.com/tugenhua0707/p/5198407.html Javascript常用的设计模式详解 阅读目录 一:理解工厂模式 二:理解单体模式 三:理解模块模式 四:理解代理模式 五:理解职责链模式 六:命令模式的理解: 七:模板方法模式 八:理解javascript中的策略模式 九:Javascript中理解发布--订阅模式 十:理解中介者模式 回到顶部 一:理解工厂模式 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。 简单的工厂模式可以理解为解决多个相似的问题;这也是她的优点;比如如下代码: function CreatePerson(name,age,sex) { var obj = new Object(); obj.name = name; obj.age = age; obj.sex = sex; obj.sayName = function(){ return this.name; } return obj; } var p1 = new CreatePerson("longen",'28','男'); var p2 = new CreatePerson("tugenhua",'27','女'); console.log

UML-持久框架-目标&关键思想

狂风中的少年 提交于 2019-11-30 16:15:32
1、目标 1)、使用模板方法、状态模式、命令模式来设计部分框架 2)、介绍对象-关系(O-R)映射中的一些问题 3)、使用虚代理实现的滞后具体化 2、关键思想 1)、映射(Mapping) 2)、对象标识(object identity) 3)、数据库映射器(database mapper) 4)、具体化和虚化(materialization and dematerialization) 5)、缓存(cache) 6)、对象的事务状态(transaction state of object) 7)、事务操作(transaction operation) 8)、滞后具体化(lazy meterialization) 9)、虚代理(virtual proxy) 来源: https://www.cnblogs.com/yaoyuan2/p/11603632.html

UML-设计模式-本地服务容错-代理模式

廉价感情. 提交于 2019-11-30 16:04:57
在《 本地服务容错-适配器+工厂模式 》中,总是优先尝试本地服务。但是,有时候需要先尝试外部服务,然后才是本地服务。GoF的代理模式可以解决这个问题。 1、代理模式的一般结构 2、使用代理模式解决本地服务容错 代理模式:代理类和被代理类,接口相同。 适配器模式:接口可不相同,主要是为了兼容老系统接口。 来源: https://www.cnblogs.com/yaoyuan2/p/11603128.html

Spring系列之AOP

风流意气都作罢 提交于 2019-11-30 15:15:16
一、什么是AOP AOP(Aspect-OrientedProgramming,面向方面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善。OOP引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。当我们需要为分散的对象引入公共行为的时候,OOP则显得无能为力。也就是说,OOP允许你定义从上到下的关系,但并不适合定义从左到右的关系。例如日志功能。日志代码往往水平地散布在所有对象层次中,而与它所散布到的对象的核心功能毫无关系。对于其他类型的代码,如安全性、异常处理和透明的持续性也是如此。这种散布在各处的无关的代码被称为横切(cross-cutting)代码,在OOP设计中,它导致了大量代码的重复,而不利于各个模块的重用。 而AOP技术则恰恰相反,它利用一种称为“横切”的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其名为"Aspect",即方面。所谓“方面”,简单地说,就是将那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可操作性和可维护性。AOP代表的是一个横向的关系,如果说“对象”是一个空心的圆柱体,其中封装的是对象的属性和行为;那么面向方面编程的方法,就仿佛一把利刃,将这些空心圆柱体剖开

代理模式(思维导图)

谁说胖子不能爱 提交于 2019-11-30 15:01:44
图-代理模式 1,静态代理设计模式   代理设计模式是在程序开发之中使用最多的设计模式,代理设计模式的核心是有真实业务实现类与代理业务实现类,并且代理类要完成比真实业务更多的处理操作。 传统代理模式设计的弊端   所有的代理设计模式如果按照设计要求来讲,必须是基于接口的设计,也就是说需要首先定义出核心接口的组成。下面模拟一个消息发送的代理操作结构。 ·范例:传统代理设计 1 package cn.mufasa.demo1; 2 3 public interface IMessage {//传统代理模式必须有接口 4 public void send();//业务方法 5 } 6 public class MessageReal implements IMessage{ 7 @Override 8 public void send() { 9 System.out.println("【消息发送】www.cnblogs.com"); 10 } 11 } 12 public class MessageProxy implements IMessage{//代理类 13 private IMessage message;//代理对象,一定是业务接口实例 14 public MessageProxy(IMessage message){ 15 this.message=message; 16

Nginx入门到实战 - 基础篇

眉间皱痕 提交于 2019-11-30 12:48:18
Nginx入门到实战 - 基础篇 一、环境 服务器版本:CentOS 7.2 为了保证学习阶段不遇到奇怪的事情,请保证以下四点(大神选择性无视) 确认系统网络 确认yum可用 确认关闭iptables 确认停用selinux #查看iptables状态systemctl status firewalld.service#关闭防火墙(临时关闭)systemctl stop firewalld.service#查看SELinux状态getenforce#临时关闭SELinuxsetenforce 0 安装一些系统基本工具,正常情况系统都会自带(没有在装哦) yum -y install gcc gcc-c++ autoconf pcre pcre-devel make automakeyum -y install wget httpd-tools vim 二、Nginx是什么? Nginx是一个开源且高性能、可靠的HTTP中间件、代理服务 其他的HTTP服务: HTTPD-Apache基金会 IIS-微软 GWS-Google(不对外开放) 近几年,Nginx的市场占有率越来越高,一度飙升,为什么呢?接下来我们就知道了! 三、我们为什么选择Nginx? 1. IO多路复用epoll(IO复用) 如何理解呢?举个例子吧! 有A、B、C三个老师,他们都遇到一个难题