原创 Java设计模式学习3

2012-9-21 11:41 1395 16 16 分类: 消费电子

 

  1. 外观模式
  2.  
  3.  

Facade

<>2.>3.>4.>5.>6.>7.>8.>9.>10.>11.>12.>13.>14.>15.>16.>17.>18.>19.>20.>21.>22.>23.>24.>25.>26.>27.>28.>29.>30.>31.Subsystemclasse*
<>33.>34.>35.>36.>37./>/>/>/>
>>>>>>>>
<>38.>39.>40.>41.>42.>43.>44./>/>/>/>/>/>
>>>>>>>>>>>>
<>45.>46.>47.>48.>49.>50.>51./>/>/>/>/>/>
>>>>>>>>>>>>
<>52.>53.Test
<>55.>56.>57.>58.>59.>60.>61.>62.>63.>64.>65./>/>/>/>/>/>/>/>/>/>
>>>>>>>>>>>>>>>>>>>>
<>66.>67.>68.>69.>70.>71.resu*t
<>73.>74.>75.>76.>77.>78.>79.>80./>/>/>/>/>/>/>
>>>>>>>>>>>>>>
        fly1.action(1);
        
        Flyweight fly* = FlyweightFactory.getF*yweight("a");
        System.out.println(fly1 == fly2);
        
        Flyweight fl*3 = FlyweightFactory.getFlywei*ht("b");
        fly3.action(2);
        
        Flyweight fly4 = Flyweigh*Factory.getF*yweight("c");
        fly4.action(3);
        
        Flyweigh* fly5 = FlyweightFactory.getFlyweight("d");
        fly4.action(4);
        
        System.out.println(FlyweightFactory.getSize())*
    }
}

result


参数值: 1
true
参数值: 2
*数值: 3
参数值: 4
4

 

11.代理模式:

   引用普遍的解释(个人觉得这个模式还是很有用的,这种解释也很到位):为其他对象提供一种代理以控制对这个对象的访问。

   然后贴上摘自网络的这种模式的适用场合:

    1.远程代理(RemoteProxy)为一个对象在不同的地址空间提供局部代表。

    2.虚*理(VirtualProxy)根据需*创建开销很大的对象。

    3.保护代理(ProtectionProxy)控制对原始对象的访问。

    4.智能指引(SmartReference)取代了简单的指针,它在访问对象时执行一些附加操作。

 

这个代理可以是一种引用,这个引用时的用户可以对于这个对象作出想要的操作。在代理这种模式下,其实还是有点像是对要代理的对象做一个继承,然后进行局部的改变。

例子代码:

  Proxy


public class ProxyObject implements Object {

    Objec* obj;
    
    public ProxyObject() {
        System.out.println("这是代理类");
        o*j = new ObjectImpl();
    }
    
    public void ac*ion() {
        System.out.p*intln("代理开始");
        obj.action*);
        System.out.println(*代理结束");
    }
}

Subject


public interface Obje*t {

    void action();
}

RealSubject


public class ObjectImpl implements Object {

    pu*lic void action() {
        System.out.println("========");
        System.out.println("========");
        System.out.pr*ntln("这是被代理的类");
        System.out.println("========");
        System.out.println("========");
    }
}

Test


public class Test {

    publi* static void main() {
        Object ob* = new ProxyObject();
        obj.action();
    *
}

result


这是代理类
代理开始
========
=*======
这是被代理的类
========
======*=
代理结束
/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/> />/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/> />/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

 

/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>

文章评论0条评论)

登录后参与讨论
我要评论
0
16
关闭 站长推荐上一条 /2 下一条