一:代理模式

1 根据名字我们就可以理解为:代替别人管理

2 什么情况下使用代理模式呢?

在软件系统中,有些对象有时候由于跨越网络或者其他的障碍,而不能够或者不想直接访问另一个对象,如果直接访问会给系统带来不必要的复杂性,这时候可以在客户程序和目标对象之间增加一层中间层,让代理对象来代替目标对象打点一切。

结构图:

3 我们一卖书为例:

 package com.lovo.Proxy;
/**
*
* @author acer
*
*/
public interface IBook {
public void sailBook(); }
 package com.lovo.Proxy;
/**
*
* @author acer
*
*/
public class RealSubject implements IBook { @Override
public void sailBook() {
System.out.println("卖书了");
} }
 package com.lovo.Proxy;
/**
*
* @author acer
*
*/
public class MyProxy implements IBook {
private RealSubject realSubject; public MyProxy(RealSubject realSubject) {
super();
this.realSubject = realSubject;
} @Override
public void sailBook() {
realSubject.sailBook(); } }
 package com.lovo.Proxy;
/**
*
* @author acer
*
*/
public class Test { public static void main(String[] args) {
MyProxy myProxy=new MyProxy(new RealSubject());
myProxy.sailBook(); } }

二:桥梁模式

主要的一句话就是  :将抽象部分与他的实现部分分离,使他们都可以独立的变化!现实指的是抽象类和他派生的类用来实现自己的对象!

我们来举个例子吧!

结构图:

比如:客户需要我们画出多种图形,并且可以用多种线条来画这些图形;

这里面变化的是图形,线条,那么我们就可以使用两个接口,让子类来实现这两个接!让子类来实现画出怎样的图像来!

首先我们写个画线条的接口:

 package com.lovo.Bridge.two;

 public interface IDraw {
public void doDraw(); }

画图形接口:

 package com.lovo.Bridge.two;

 public interface IShape {
public void myDraw(); }

各种图形的类:// 矩形 圆

 package com.lovo.Bridge.two;

 public class Rectangular implements IShape {
private int width;
private int height;
private IDraw draw; public Rectangular(int width, int height, IDraw draw) {
super();
this.width = width;
this.height = height;
this.draw = draw;
} public int getWidth() {
return width;
} public void setWidth(int width) {
this.width = width;
} public int getHeight() {
return height;
} public void setHeight(int height) {
this.height = height;
} public IDraw getDraw() {
return draw;
} public void setDraw(IDraw draw) {
this.draw = draw;
} @Override
public void myDraw() {
System.out.println("画矩形:长:"+this.width+"高:"+this.height);
draw.doDraw(); } }
 package com.lovo.Bridge.two;

 public class Round implements IShape{
private int r;
private int x;
private int y;
private IDraw draw; public Round(int r, int x, int y, IDraw draw) {
super();
this.r = r;
this.x = x;
this.y = y;
this.draw = draw;
} public int getR() {
return r;
} public void setR(int r) {
this.r = r;
} public int getX() {
return x;
} public void setX(int x) {
this.x = x;
} public int getY() {
return y;
} public void setY(int y) {
this.y = y;
} public IDraw getDraw() {
return draw;
} public void setDraw(IDraw draw) {
this.draw = draw;
} @Override
public void myDraw() {
System.out.println("画圆:半径:"+this.r +"圆心在("+this.x+","+this.y+")");
draw.doDraw(); } }

在写两个线条的类://实线  虚线

 package com.lovo.Bridge.two;

 public class Dotted implements IDraw{

     @Override
public void doDraw() {
System.out.println("画虚线");
} }
 package com.lovo.Bridge.two;

 public class Solid implements IDraw{

     @Override
public void doDraw() {
System.out.println("画实线");
} }

最后来个测试类:

 package com.lovo.Bridge.two;

 public class Test {

     public static void main(String[] args) {
IDraw d=new Solid();
IShape s=new Rectangular(100, 50, d);
s.myDraw();
} }

对于这些设计模式  其实我自己也不太搞得清楚的,只是因为最近在学这个!算是做一些记录吧!

代理(Proxy)模式 ,桥梁(Bridge)模式的更多相关文章

  1. Java设计模式(6)桥模式(Bridge模式)

    Bridge定义:将抽象和行为划分开来,各自独立,但能动态的结合. 为什么使用桥模式 通常,当一个抽象类或接口有多个具体实现(concrete subclass),这些concrete之间关系可能有以 ...

  2. 设计模式——桥接模式(Bridge模式)

    基本介绍 桥接模式(Bridge模式):将实现与抽象放在两个不同的类层次中,使两层次可以独立改变 是一种结构型设计模式 说白了就是有多个维度的变化,这样的组合关系如果按照传统的方式会导致类爆炸,所以需 ...

  3. 设计模式之桥接模式(Bridge模式)

    我想大家小时候都有用蜡笔画画的经历吧.红红绿绿的蜡笔一大盒,根据想象描绘出格式图样.而毛笔下的国画更是工笔写意,各展风采.而今天我们的故事从蜡笔与毛笔说起. 设想要绘制一幅图画,蓝天.白云.绿树.小鸟 ...

  4. Abstract Server模式,Adapter模式和Bridge模式

    简易的台灯 Abstract Server模式 谁拥有接口. 接口属于它的客户,而不是它的派生类. 接口和客户之间的逻辑关系,强于接口和其派生类的逻辑关系. 逻辑关系和实体关系的强度是不一致的.在实体 ...

  5. (原创)composite模式和bridge模式是天生的好朋友

    composite模式的意图是:将对象组合成树形结构以表示“部分-整体”的层次结构.composite使得用户对单个对象和组合对象的使用具有一致性.它的类图如下: composite模式的实现分为透明 ...

  6. 桥接模式(Bridge模式)

    桥接模式的定义与特点 桥接(Bridge)模式的定义如下:将抽象与实现分离,使它们可以独立变化.它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度.通过上面的讲解,我们能很好 ...

  7. Android中Adapter和Bridge模式理解和应用

    一 Adapter模式 意图: 将一个类的接口转换成客户希望的另外一个接口. Adapter模式使得原本由于接口不兼容而不能在一起工作的那些类可以在一起工作. 适用性: 使用一个已存在的类,而它的接口 ...

  8. PHP设计模式(八)桥接模式(Bridge For PHP)

    一.概述 桥接模式:将两个原本不相关的类结合在一起,然后利用两个类中的方法和属性,输出一份新的结果. 二.案例 1.模拟毛笔(转) 需求:现在需要准备三种粗细(大中小),并且有五种颜色的比 如果使用蜡 ...

  9. Java设计模式(22)命令模式(Command模式)

    Command模式是最让我疑惑的一个模式,我在阅读了很多代码后,才感觉隐约掌握其大概原理,我认为理解设计模式最主要是掌握起原理构造,这样才对自己实际编程有指导作用.Command模式实际上不是个很具体 ...

  10. Java设计模式(19)状态模式(State模式)

    State的定义:不同的状态,不同的行为:或者说,每个状态有着相应的行为. 何时使用状态模式 State模式在实际使用中比较多,适合"状态的切换".因为我们经常会使用If else ...

随机推荐

  1. curl工具介绍和常用命令

    curl是利用URL语法在命令行方式下工作的开源文件传输工具.它被广泛应用在Unix.Linux发行版中,并且有DOS和Win32.Win64的移植版本.curl是一个利用URL规则在命令行下工作的文 ...

  2. Windows 7/Vista下安装Oracle Developer Suit遇到的几个问题

    http://blog.csdn.net/pan_tian/article/details/8016318 Oracle Developer Suite (ODS) 10g是在Windows 7/Vi ...

  3. 配置Info.plist (设置状态栏样式、自定义定位时系统弹出的提示语、配置3DTouch应用快捷菜单)

    一.概述 iOS中很多功能需要配置Info.plist才能实现,如设置后台运行.支持打开的文件类型.自定义访问隐私内容时弹出的提示等.了解Info.plist中各字段及其含义,可以访问苹果开发网站相关 ...

  4. python使用httplib2访问REST服务的例子

    首先你需要安装httplib2,这个可以在github上找到: 然后你需要获得一个http连接的对象: con = httplib2.Http()   然后你需要发起连接: (6)resp, (5)c ...

  5. uwsgi+nginx+django

    http://blog.csdn.net/c465869935/article/details/53242126 http://uwsgi-docs.readthedocs.io/en/latest/ ...

  6. windform 重绘Treeview "+-"号图标

    模仿wind系统界面,重绘Treeview + - 号图标 一,首先需要图片 ,用于替换原有的 +-号 二.新建Tree扩展类 TreeViewEx继承TreeView using System; u ...

  7. pageadmin CMS自助建站系统教程:模板中执行sql语句

    PageAdmin系统提供了一个内置的数据库访问对象,声明如下: DataBaseContext dbContext = DbHelper.DbContext(); 通过DataBaseContext ...

  8. 【BZOJ3545】 [ONTAK2010]Peaks

    BZOJ3545 [ONTAK2010]Peaks Solution 既然会加强版,直接把强制在线的操作去掉就好了. 代码实现 #include<stdio.h> #include< ...

  9. 配置文件springmvc.xml

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  10. OCP 062大量考试新题(2019年)-12

    12. Your database is configured in archivelog mode. Examine the RMAN configuration parameters: CONFI ...