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

网站开发的缓存技术广州越秀区儿童医院

网站开发的缓存技术,广州越秀区儿童医院,WordPress设置登录后搜索,网站推广报价JAVA设计模式——(九)工厂模式 介绍理解实现ProductFactory测试泛型扩展 应用 介绍 定义一个工厂类的接口,帮助一个实际对象 创建实例,并让其工厂类的子类决定实例化哪个类。 理解 工厂模式中,必定分为了两部分&…

JAVA设计模式——(九)工厂模式

  • 介绍
  • 理解
  • 实现
    • Product
    • Factory
    • 测试
    • 泛型扩展
  • 应用

介绍

定义一个工厂类的接口,帮助一个实际对象 创建实例,并让其工厂类的子类决定实例化哪个类。

理解

工厂模式中,必定分为了两部分,一部分是被工厂模式实例化的对象(Product),一部分是工厂模式的接口(Factory)。

这里主要需要注意的是一个对象,工厂类只负责一个对象的创建

实现

Product

package cn.sh.designepattern.example01;/*** @Author song* @Version 0.0.1* @Date 2025/4/29 10:41* @Contact 643947568@qq.com*/
public interface Product {public void product();
}

实现类:

package cn.sh.designepattern.example01;/*** @Author song* @Version 0.0.1* @Date 2025/4/29 10:41* @Contact 643947568@qq.com*/
public class ActualProduct implements Product {@Overridepublic void product() {System.out.println("生产具体的产品");}
}

Factory

package cn.sh.designepattern.example01;/*** @Author song* @Version 0.0.1* @Date 2025/4/29 10:42* @Contact 643947568@qq.com*/
public interface Factory {public Product factory();}

工厂子类:

package cn.sh.designepattern.example01;/*** @Author song* @Version 0.0.1* @Date 2025/4/29 10:42* @Contact 643947568@qq.com*/
public class ActualFactory implements Factory {@Overridepublic Product factory() {return new ActualProduct();}
}

测试

package cn.sh.designepattern.example01;/*** @Author song* @Version 0.0.1* @Date 2025/4/29 10:18* @Contact 643947568@qq.com*/
public class Main {public static void main(String[] args) {ActualFactory actualFactory = new ActualFactory();Product factory = actualFactory.factory();factory.product();}
}

泛型扩展

采用泛型的工厂类

package cn.sh.designepattern.example02;import java.lang.reflect.InvocationTargetException;/*** @Author song* @Version 0.0.1* @Date 2025/4/29 11:22* @Contact 643947568@qq.com*/
public interface Factory {public <T> T factory(Class<T> t) throws NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException;
}
package cn.sh.designepattern.example02;import java.lang.reflect.InvocationTargetException;/*** @Author song* @Version 0.0.1* @Date 2025/4/29 11:27* @Contact 643947568@qq.com*/
public class ActualFactory implements Factory {@Overridepublic <T> T factory(Class<T> t) throws NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException {return t.getDeclaredConstructor().newInstance();}
}

具体类1:

package cn.sh.designepattern.example02;/*** @Author song* @Version 0.0.1* @Date 2025/4/29 11:24* @Contact 643947568@qq.com*/
public interface Product01 {public void product01();}
package cn.sh.designepattern.example02;/*** @Author song* @Version 0.0.1* @Date 2025/4/29 11:24* @Contact 643947568@qq.com*/
public class ActualProductO1 implements Product01{@Overridepublic void product01() {System.out.println("生产01");}
}

具体类2:

package cn.sh.designepattern.example02;/*** @Author song* @Version 0.0.1* @Date 2025/4/29 11:24* @Contact 643947568@qq.com*/
public interface Product02 {public void product02();}
package cn.sh.designepattern.example02;/*** @Author song* @Version 0.0.1* @Date 2025/4/29 11:24* @Contact 643947568@qq.com*/
public class ActualProductO2 implements Product02 {@Overridepublic void product02() {System.out.println("生产02");}
}

测试:

package cn.sh.designepattern.example02;import java.lang.reflect.InvocationTargetException;/*** @Author song* @Version 0.0.1* @Date 2025/4/29 11:28* @Contact 643947568@qq.com*/
public class Main {public static void main(String[] args) throws InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException {ActualFactory actualFactory = new ActualFactory();ActualProductO1 productO1 = actualFactory.factory(ActualProductO1.class);productO1.product01();ActualProductO2 productO2 = actualFactory.factory(ActualProductO2.class);productO2.product02();}
}

应用

上述的工厂模式是一个简单的工厂模式,每次需要对具体类均创建一个工厂类,所以适用性单一。当然也有采用泛型的工厂方法,能够适用较多的场景。

可用于对对象的封装,降低模块的耦合度,因为不需要知道具体类的实现细节,即使具体类的实现改变,也只需要修改具体的工厂类方法,所以有较好的扩展性

http://www.dtcms.com/wzjs/572291.html

相关文章:

  • 建设厅企业锁在哪个网站登录wordpress国外主题安装
  • 景区网站建设策划书专业模板建站公司
  • 汽车网站大全汽车网黄页88和58那个推广好
  • 模版网站可以做seo吗公司个人怎么制作网站
  • 网站建设与管理实训报告网站建设的服务和质量
  • 网站备案资料申请wordpress门户网站主题
  • 厦门网站建设westcy苏州优化网站建设
  • 考试网站建设dw怎么做班级网站
  • 银川做网站的 公司有哪些潍坊网站制作 熊掌号
  • 有部分网站打不开wordpress屏蔽谷歌蜘蛛
  • 网站开发课程技术培训wordpress 双栏主题
  • 怎么做好网站营销推广莆田网站制作软件
  • 土木工程毕业设计网站山西省建设厅网站首页6
  • 中国建设银行官网站账户商品一份完整app运营推广方案
  • 中国电子建设公司网站交互网站建设需要做什么
  • jsp做的网站怎嘛用网站建设如何做好整体色彩搭配
  • 做网站用到的工具wordpress点评系统
  • 营销型网站建设的认识订阅号栏目里做微网站
  • 做设计的搜素材上什么网站滕州市中远建设工程公司网站首页
  • 网站开发网页设计游戏设计哪个网站可以做思维导图
  • 企业州建设银行网站湘阴网页定制
  • 茂名市制作网站的公司河南郑州建设厅网站
  • 为什么做网站网站事业单位网站建设计划
  • 网站建设书店目标客户分析濮阳是哪里
  • 个人网站有哪些平台怎样将自己做的网页加入网站
  • 做电影网站多少带宽亚马逊站外deal网站
  • 广东建设继续教育网站北京光辉网站建设
  • 模板网站建设教程如何制作小程序二维码
  • 网站建设推广代理商怎样做百度推广网站
  • 重庆网站建设 渝小程序源码破解