热度 16
2012-9-21 11:41
1396 次阅读|
0 个评论
外观模式 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 这是代理类 代理开始 ======== =*====== 这是被代理的类 ======== ======*= 代理结束 /////////////////// ///////////////////// ///////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////