当前位置: 首页 > news >正文

番禺制作网站开发购物网站设计公司

番禺制作网站开发,购物网站设计公司,合肥瑶海区邮政编码,wordpress上下页翻页文章目录 享元模式1.引出享元模式1.展示网站项目需求2.传统方案解决3.问题分析 2.享元模式1.基本介绍2.原理类图3.外部状态和内部状态4.类图5.代码实现1.AbsWebSite.java 抽象的网站2.ConcreteWebSite.java 具体的网站#xff0c;type属性是内部状态3.WebSiteFactory.java 网站… 文章目录 享元模式1.引出享元模式1.展示网站项目需求2.传统方案解决3.问题分析 2.享元模式1.基本介绍2.原理类图3.外部状态和内部状态4.类图5.代码实现1.AbsWebSite.java 抽象的网站2.ConcreteWebSite.java 具体的网站type属性是内部状态3.WebSiteFactory.java 网站工厂根据类型获取对应类型的网站4.User.java 使用网站的用户是外部状态5.Client.java6.结果 6.小结 3.享元模式在Integer的应用 代理模式1.基本介绍1.介绍2.简单类图 2.静态代理1.基本介绍2.类图3.代码实现1.目录结构2.ITeacherDao.java 被代理的接口3.TeacherDao.java 被代理的实现类4.TeacherDaoProxy.java 静态代理类5.Client.java6.结果 2.动态代理JDK代理1.基本介绍2.类图3.代码实现1.ITeacherDao.java 被代理的接口2.TeacherDao.java 被代理的类3.ProxyFactory.java 代理工厂返回动态代理对象4.Client.java5.结果 3.Cglib代理1.基本介绍2.注意事项3.类图4.引入四个jar包5.代码实现1.目录结构2.TeacherDao.java 被代理的类3.ProxyFactory.java 返回代理对象的工厂4.Client.java5.结果 6.几种变体 享元模式 1.引出享元模式 1.展示网站项目需求 2.传统方案解决 3.问题分析 2.享元模式 1.基本介绍 2.原理类图 3.外部状态和内部状态 4.类图 5.代码实现 1.AbsWebSite.java 抽象的网站 package com.sun;/*** Description: 抽象的网站* Author sun* Create 2024/6/6 19:45* Version 1.0*/ public abstract class AbsWebSite {public abstract void use(User user); }2.ConcreteWebSite.java 具体的网站type属性是内部状态 package com.sun;/*** Description: 具体的网站* Author sun* Create 2024/6/6 19:46* Version 1.0*/ public class ConcreteWebSite extends AbsWebSite {// 网站的发布类型private String type ;// 在创建网站时把具体的类型传进来public ConcreteWebSite(String type) {this.type type;}Overridepublic void use(User user) {System.out.println(网站的发布类型为 type user.getName() 在使用中);} }3.WebSiteFactory.java 网站工厂根据类型获取对应类型的网站 package com.sun;import java.util.HashMap;/*** Description: 网站的工厂类根据需求返回一个具体的网站* Author sun* Create 2024/6/6 19:49* Version 1.0*/ public class WebSiteFactory {// 一个集合充当池的作用private HashMapString, ConcreteWebSite pool new HashMap();public AbsWebSite getWebsiteCategory(String type) {// 如果池中没有包含对应类型的对象就创建一个对象放到池中if (!pool.containsKey(type)) {pool.put(type, new ConcreteWebSite(type));}// 只要到这里了就必然可以拿到对象return (AbsWebSite) pool.get(type);}// 获取池中的网站总数public int getWebSiteCount() {return pool.size();} }4.User.java 使用网站的用户是外部状态 package com.sun;/*** Description: 享元模式中的外部状态* Author sun* Create 2024/6/6 20:12* Version 1.0*/ public class User {private String name;public User(String name) {this.name name;}public String getName() {return name;}public void setName(String name) {this.name name;} }5.Client.java package com.sun;/*** Description:* Author sun* Create 2024/6/6 20:02* Version 1.0*/ public class Client {public static void main(String[] args) {// 创建一个工厂类WebSiteFactory webSiteFactory new WebSiteFactory();// 要一个以新闻形式发布的网站AbsWebSite webSite webSiteFactory.getWebsiteCategory(新闻);webSite.use(new User(tom));// 要一个以博客形式发布的网站后面即使要更多相同类型的网站都会直接从池中获取而不会创建新的实例AbsWebSite webSite2 webSiteFactory.getWebsiteCategory(博客);webSite2.use(new User(jack));AbsWebSite webSite3 webSiteFactory.getWebsiteCategory(博客);webSite3.use(new User(lisa));AbsWebSite webSite4 webSiteFactory.getWebsiteCategory(博客);webSite4.use(new User(milan));int webSiteCount webSiteFactory.getWebSiteCount();System.out.println(webSiteCount webSiteCount);} }6.结果 6.小结 3.享元模式在Integer的应用 代理模式 1.基本介绍 1.介绍 2.简单类图 2.静态代理 1.基本介绍 2.类图 3.代码实现 1.目录结构 2.ITeacherDao.java 被代理的接口 package com.sun.staticproxy;/*** Description: 接口* Author sun* Create 2024/6/7 19:05* Version 1.0*/ public interface ITeacherDao {void teach(); }3.TeacherDao.java 被代理的实现类 package com.sun.staticproxy;/**TeacherDaoProxy.java* Description: 实现类* Author sun* Create 2024/6/7 19:06* Version 1.0*/ public class TeacherDao implements ITeacherDao{Overridepublic void teach() {System.out.println(老师正在授课中);} }4.TeacherDaoProxy.java 静态代理类 package com.sun.staticproxy;/*** Description: 代理TeacherDao* Author sun* Create 2024/6/7 19:06* Version 1.0*/ public class TeacherDaoProxy implements ITeacherDao{// 使用构造器进行聚合private ITeacherDao teacherDao;public TeacherDaoProxy(ITeacherDao teacherDao) {this.teacherDao teacherDao;}Overridepublic void teach() {System.out.println(代理开始);teacherDao.teach();System.out.println(代理结束);} }5.Client.java package com.sun.staticproxy;/*** Description:* Author sun* Create 2024/6/7 19:11* Version 1.0*/ public class Client {public static void main(String[] args) {TeacherDaoProxy teacherDaoProxy new TeacherDaoProxy(new TeacherDao());teacherDaoProxy.teach();} }6.结果 2.动态代理JDK代理 1.基本介绍 2.类图 3.代码实现 1.ITeacherDao.java 被代理的接口 package com.sun.dynamic;/*** Description: 被代理的接口* Author sun* Create 2024/6/7 19:25* Version 1.0*/ public interface ITeacherDao {void teach(String name);}2.TeacherDao.java 被代理的类 package com.sun.dynamic;/*** Description: 实现类* Author sun* Create 2024/6/7 19:06* Version 1.0*/ public class TeacherDao implements ITeacherDao {Overridepublic void teach(String name) {System.out.println(name 老师正在授课中);}}3.ProxyFactory.java 代理工厂返回动态代理对象 package com.sun.dynamic;import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; import java.util.Arrays;/*** Description: 动态代理对象可以对其代理的对象的任意方法添加任意操作* Author sun* Create 2024/6/7 19:27* Version 1.0*/ public class ProxyFactory {// 构造器聚合一个目标对象private Object target;public ProxyFactory(Object target) {this.target target;}// 给目标对象生成一个代理对象public Object getProxyInstance() {/*** 参数说明* ClassLoader loader:指定当前目标对象使用的类加载器* Class?[] interfaces:是目标对象实现的接口类型使用泛型方法确认类型* InvocationHandler h:是事件处理当使用代理对象调用目标对象的方法时会触发*/return Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), new InvocationHandler() {/*** method目标方法的Method对象可以用来调用目标任何方法* args目标方法的参数也就是动态代理对象调用目标任何方法时传入的参数* return 返回调用目标方法的返回值也可以返回null* throws Throwable*/Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {System.out.println(method method , args Arrays.toString(args));System.out.println(动态代理开始);/*invoke方法的第一个参数是目标对象第二个参数的目标方法的参数*/Object result method.invoke(target, args);System.out.println(动态代理结束);return result;}});} }4.Client.java package com.sun.dynamic;/*** Description:* Author sun* Create 2024/6/7 19:47* Version 1.0*/ public class Client {public static void main(String[] args) {// 创建一个目标对象ITeacherDao target new TeacherDao();// 得到代理对象ITeacherDao proxy (ITeacherDao) new ProxyFactory(target).getProxyInstance();// 使用代理对象调用方法proxy.teach(李华);} }5.结果 3.Cglib代理 1.基本介绍 2.注意事项 3.类图 4.引入四个jar包 5.代码实现 1.目录结构 2.TeacherDao.java 被代理的类 package com.sun.cglib;/*** Description: 被代理的类* Author sun* Create 2024/6/8 19:37* Version 1.0*/ public class TeacherDao {public void teach(String name) {System.out.println(name 老师授课中使用的是cglib代理不需要实现接口);} }3.ProxyFactory.java 返回代理对象的工厂 package com.sun.cglib;import net.sf.cglib.proxy.Enhancer; import net.sf.cglib.proxy.MethodInterceptor; import net.sf.cglib.proxy.MethodProxy;import java.lang.reflect.Method;/*** Description:* Author sun* Create 2024/6/8 19:38* Version 1.0*/ public class ProxyFactory implements MethodInterceptor {// 构造器聚合一个目标对象private Object target;public ProxyFactory(Object target) {this.target target;}// 返回目标对象的代理对象public Object getProxyInstance() {//1.创建一个工具类Enhancer enhancer new Enhancer();//2.设置父类enhancer.setSuperclass(target.getClass());//3.设置回调函数enhancer.setCallback(this);//4.创建子类对象return enhancer.create();}/*** 当使用代理对象调用目标对象的函数时就会跳到这个函数跟之前动态代理时类似* param o* param method 代理对象调用的目标对象的函数* param args 函数的参数* param methodProxy* return* throws Throwable*/Overridepublic Object intercept(Object o, Method method, Object[] args, MethodProxy methodProxy) throws Throwable {System.out.println(cglib代理模式开始);// 调用目标对象的函数System.out.println(method method);System.out.println(args args);Object returnVal method.invoke(target, args);System.out.println(cglib代理结束);return returnVal;} }4.Client.java package com.sun.cglib;/*** Description:* Author sun* Create 2024/6/8 19:50* Version 1.0*/ public class Client {public static void main(String[] args) {// 创建一个目标对象TeacherDao teacherDao new TeacherDao();// 得到目标对象的代理对象ProxyFactory proxyFactory new ProxyFactory(teacherDao);TeacherDao proxyInstance (TeacherDao) proxyFactory.getProxyInstance();// 使用代理对象来调用目标对象函数则会被代理proxyInstance.teach(小明);} }5.结果 6.几种变体
http://www.w-s-a.com/news/248685/

相关文章:

  • 网站维护的协议做网站 需要 域名 空间
  • 高安建站公司济宁哪里做网站最便宜
  • 南宁建站免费模板简单的html网页设计
  • 吉林省建设 安全 网站沐风seo
  • 自己做捕鱼网站能不能挣钱软件开发公司需要什么硬件设备
  • 大连设计网站公司3小说网站开发
  • 建设环保网站查询系统网站建设168
  • 保险网站程序源码wordpress过滤敏感
  • 简述营销型网站推广的方法网站建设报价方案模板
  • 四川林峰脉建设工程有限公司网站为什么建设营销型网站
  • 网站模板搭建已经建网站做外贸
  • 网站建设选哪个wordpress实现微信登录界面
  • 网页设计网站哪个公司好学网站开发要多少钱
  • 商务网站建设ppt做视频分享网站
  • WordPress网站根目录有哪些wordpress用户等级
  • 私人装修接单网站重庆制作企业网站
  • 易企秀网站怎么做轮播图什么是网站版面布局
  • 网站开发先写什么后写什么做网站公司专业
  • 中山网站建设文化外贸公司的网站建设模板
  • 美食网站开发开题报告wordpress第三方支付接口
  • 有哪些网站可以卖自己做的图片简洁大方的网站首页
  • 四川建设网电子招投标网站网站酷站
  • 凯里网站建设如何收费网站建设php怎么安装
  • 网站建设专业网站设计公司物格网一站式建站价格
  • seo网站培训优化怎么做如何给网站做下载附件
  • php网站建设文献综述怎么样提高网站排名
  • 专用车网站建设wordpress半透明
  • 石狮网站建设哪家好wordpress 3.9 漏洞
  • 为何建设单位网站找网络推广策畿
  • 用网站模板做网站动漫制作专业学校前十名