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

网站开发公司介绍阿里云服务器登录

网站开发公司介绍,阿里云服务器登录,最好的手机资源网站,做网站用买服务器码我们以生产手机作为应用场景展开讲解#xff01; 手机是一个抽象的概念#xff0c;它包含很多的品牌#xff0c;例如华为#xff0c;苹果#xff0c;小米等等#xff0c;因此我们可将其抽象为一个接口#xff0c;如下所示#xff1a; public interface tel {void pro…我们以生产手机作为应用场景展开讲解 手机是一个抽象的概念它包含很多的品牌例如华为苹果小米等等因此我们可将其抽象为一个接口如下所示 public interface tel {void produce(); }苹果手机作为手机的实现类之一实现手机的接口 public class appleTel implements tel{Overridepublic void produce() {System.out.println(苹果手机);} }华为手机也是如此 public class huaweiTel implements tel{Overridepublic void produce() {System.out.println(华为手机);} }客户端代码 public class test {public static void main(String[] args) {//生产苹果手机---创建对应的实例对象tel telnew appleTel();tel.produce();//生产华为手机---创建对应的实例对象tel tel1new huaweiTel();tel1.produce();} }如上所示为客户端每生产一个产品就要实现创建实现类的实例化对象这种方式既包含对象的创建也包含对象的实现其耦合度很高为了将对象的创建与使用分离隐藏具体实现细节提高代码的灵活性我们引入了工厂模式 如下所示我们创建工厂类 它的作用是将对象的创建逻辑封装起来其中我们通过if-else语句对客户端传递的参数进行判断创建对应的实现类的实例化对象 public class telfactory {public tel create(String name){if(name.equals(华为)){return new huaweiTel();} else if(name.equals(苹果)){return new appleTel();}else {return null;}} }客户端代码修改如下所示 与上述相比我们将具体对象的创建过程隐藏在工厂类中客户端只需关心所需对象的接口而无需关心具体的实现细节。这样可以保护对象的具体实现细节提高代码的安全性。 public class test {public static void main(String[] args) {//工厂模式---只需要创建工程类的实例化对象其实现类的对象创建过程在工厂类中完成telfactory telfactorynew telfactory();telfactory.create(苹果).produce();telfactory.create(华为).produce();} }上述我们是在工厂类中通过if-else语句进行判断后创建对应的实现类实例化对象这种方式有很多缺点它不符合开闭原则假设未来我们有了更多的实现类那么必须修改工厂类中的if-else代码的灵活性并不高。 对此我们可以再进行优化在工厂类中我们的判断逻辑不在具体到每个实现类上而是只需要判断客户端给定的类名通过反射创建的实例对象是否可以上转型成我们的接口类型。 public class telfactory {public tel create(String classname) throws ClassNotFoundException, InstantiationException, IllegalAccessException {//根据在客户端给定的类名返回一个Class对象该对象表示与客户端指定类名对应的类再调用newInstance()创建该类的一个实例对象。再将其通过上转型转化为tel接口类型if(!(nullclassname||.equals(classname))) {return (tel) Class.forName(classname).newInstance();}return null;} }客户端只需要指定类名但是需要注意传入的必须是全类名 public class test {public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException {telfactory telfactorynew telfactory();//传入全类名以便通过反射创建对应的实现类的实例化对象telfactory.create(com.wjr.demo1.telFactory.appleTel).produce();telfactory.create(com.wjr.demo1.telFactory.huaweiTel).produce();} }上述对工厂类中的代码进行了优化但客户端需要传入的是字符串的全类名而且只有当运行之后我们才知道传入的类名是否有问题这显然不利于我们测试因此我们可以修改客户端传入的参数类型通过泛型限定限定传入的类必须为实现当前接口假设我们在客户端传入的类不符合编译器也会及时的报错以便我们修改和检查 public class telfactory {public tel create(Class ? extends tel clazz) throws ClassNotFoundException, InstantiationException, IllegalAccessException {//通过泛型限定传入的类型必须是tel的实现类if(!(nullclazz||.equals(clazz))) {return clazz.newInstance();}return null;} }public class test {public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException {telfactory telfactorynew telfactory();telfactory.create(com.wjr.demo1.telFactory.appleTel.class).produce();telfactory.create(com.wjr.demo1.telFactory.huaweiTel.class).produce();} }
http://www.dnsts.com.cn/news/38114.html

相关文章:

  • 扬州建设集团招聘信息网站上海网站备案拍照地点
  • 福建省铁路建设办公室网站北京网站改版要注意什么
  • 太原网站建设加王道下拉网站建设策划书
  • 网站怎么运营推广保险网站
  • 网站关键字多少个wordpress子主题style
  • 怎么做网站挣钱软文代写是什么
  • 网站底部备案图标商丘推广公司
  • jquery个人网站开发做纺织外贸哪个贸易网站好
  • 怎么建立一个自己的网站linux主机 安装wordpress
  • 旅游企业公司网站建设广东省政务服务网
  • 网站开发虚拟主机系统互联网推广工作好做吗
  • 自己在电脑上建文档做网站怎么做珠海市横琴新区建设环保局网站
  • 网站前端设计是什么意思网络公司排名中国
  • 南京网站建设中企动力网络平台建设及运营方案
  • 外贸seo网站制作秀洲区住房和城乡建设局网站
  • 九江集团网站建设公司做网站全自动cpa引流
  • 做模型的网站有哪些内容如何拥有一个免费的企业邮箱
  • 360元网站建设 网络服务手机网站开发看什么书
  • 织梦cms传播公司网站模板网站推广在哪好
  • 黑龙江开放网站备案官网seo优化找哪家做
  • 网站开发前调查美橙网站建设教程
  • 网站申请支付宝接口一般做个网站多少钱
  • 百度小程序对网站seo多软件网站下载安装
  • 菏泽兼职网站建设西安营销网站建设
  • 互动科技 网站建设珠海 网站建设
  • 怎么建网站数据库广西建设网证件查询电子证打印
  • 高端网站创建好三网网站
  • 燕十八html教程网站建设怎么建设网站啊
  • 创建网站多少钱微视频网站源码
  • 商会建设网站说明贸易公司网站建设