zoukankan      html  css  js  c++  java
  • 常用的设计模式及java代码描述

    http://blog.csdn.net/haoxingfeng/article/details/9191619

    1>代理模式    

     http://www.cnblogs.com/chinajava/p/5880870.html

     代理模式分静态代理和动态代理

     静态代理:(需要一个接口,一个委托类实现接口,一个代理类实现接口,) 代理模式就是提供一个代理对象,其可以实现委托类的部分功能,而且也可以拓展自己的功能

     例如(委托类)售票厅可以售票、改签、退票;(代理类)黄牛售票只可以售票,要办理改签或者退票的业务必须去售票厅

    //接口
    package com.wyx.proxyTest;
    public interface ISubject {
        public void request();
    }
    
    //委托类
    package com.wyx.proxyTest;
    public class SubjectImpl implements ISubject {
        @Override
        public void request() {
            System.out.println("this is real subject");
        }
            public void otherFun(){
            }  
    }     
    
    //代理类
    package com.wyx.proxyTest;
    /*
     * 这个是代理类,它只有SubjectImpl中的部分功能
     */
    public class SubjectProxy implements ISubject{
        private ISubject sub = null;
        
        public SubjectProxy(ISubject sub){
            this.sub = sub;
        }
        @Override
        public void request() {
            System.out.println("This is Proxy");
            sub.request();
        }
    }   
    
    //代理类测试
    package com.wyx.proxyTest;
    public class MainTest {
        public static void main(String[] args){
            
            SubjectImpl sub = new SubjectImpl();
            
            SubjectProxy proxy = new SubjectProxy(sub);
            proxy.request();
        }
    }


    动态代理:

    2>装饰模式

    3>策略模式(这个模式是行为的抽象,蒋其他几个类有相似的方法,用通用的抽象的方法提取出来,更容易拓展)

      

    4>单例模式(使得内存中只存在一个这样的对象,有饿汉式、饱汉式)

    public class SingleMain{
      //主方法
      public static void main(String[] args){
      
      }
    }

    //饿汉式
    class SingletonDome1{
      //私有的对象
      private static final SingletonDome1 sgd1 = new SingletonDome1();  
      ///私有的构造方法
      private SingletonDome1(){}
      //
      public static SingletonDome1 getSgd1(){
        return sgd1;
      }
    }
    //饱汉式
    class SingletonDome2{
      //私有的对象
      private static SingletonDome2 sgd2 = new SingletonDme2();
      //私有的构造方法
      private SingletonDome2(){}
      //
      public static SingletonDome2 getSgd2(){
        if(sgd2 == null){
          sgd2 = new SingletonDome2();
        }
        return sgd2;
      }
    }

    5>工厂模式(是实例化对象的方法模式,即:用工厂方法代替New操作的一种模式,例:以下是个简单的例子)

    /*
    *静态工厂模式
    */
    //接口
    public interface Alphabet
    {
      
    public void alphabetFun(Object... params); }
    //接口的实现A类
    public class A implements Alphabet{
      @Override
      public void alphabetFun(Object... params){
        System.out.println(params[0]+" "+"This is A");
      }

    }
    //接口的实现B类
    public class B implements Alphabet{
      @Override
      public void alphabetFun(Object... params){
        System.out.println(params[0]+" "+"This is A");
      }
    }
    //工厂类 
    public class FactoryCls{
      public static
    Alphabet factoryFun(String abc){
        Alphabet tempObj;
        //利用了java反射的机制
        Class cls = null;
        try{
          cls = Class.forName("类路径");
        }catch(Expection e){
          e.printStackTrace();
        }    

        /*
        if(abc=="A"){
          tempObj = new A();
        }else if(abc=="B"){
          tempObj = new B();
        }
        */
        return tempObj;
      }

    }
  • 相关阅读:
    hello world !
    从数据库提取数据报错java.sql.SQLException: Column '4' not found.解决方法
    tomcat加载项目无法启动报错(Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/**])解决办法
    tomcat SERVER启动时did not find a matching property错误解决办法
    MVC与SSH(SSM)间的关系
    the resource is not on the build path of a Java project报错解决
    接口的作用
    eclipse error pages打红X的解决方法
    文本提交带单引号引起mysql报错
    五、HTML判断输入长度,体会字体颜色变化
  • 原文地址:https://www.cnblogs.com/yuxin-555xt/p/5975937.html
Copyright © 2011-2022 走看看