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

优质校建设网站惠州电商网站建设

优质校建设网站,惠州电商网站建设,宝塔无法安装wordpress插件,怎么自己编写网站面向对象的七大原则#xff08;OOP#xff09; 1,开闭原则#xff1a; 对扩展开发#xff0c;对修改关闭 2.里氏替换原则#xff1a; 继承必须确保超类所拥有的子类的性质在子类中仍然成立 3.依赖倒置原则#xff1a; 面向接口编程#xff0c;不要面向实现编程OOP 1,开闭原则 对扩展开发对修改关闭 2.里氏替换原则 继承必须确保超类所拥有的子类的性质在子类中仍然成立 3.依赖倒置原则 面向接口编程不要面向实现编程降低程序之间的耦合性 4.单一职责原则 控制类的粒度大小将对象解耦提高其内聚性 5.接口隔离原则 要为各个类创建他们专用的接口 6.迪米特法则 只于你的直接朋友交谈不跟陌生人交谈 7.合成复用法则 尽量先使用组合或者聚合等关联来实现其次才考虑使用集成关系来实现 单例模式 饿汉模式 public class Hunger{private Hunger(){}private final static Hunger HUNGER_SINGLTON new Hunger();public static Hunger getInstrente(){return HUNGER_SINGLTON;} }懒汉模式 第一种不考虑安全的问题 public class LayzeMan{private static LayzMan LAYZE_MAN;private LayzeMan(){System.out.println(Thread.currentThread().getName()ok);}public static LayzeMan getInstrence(){if(LAYZE_MAN null){LATZE_MAN new LayzeMan();}return LAYZE_MAN;} } /** 该单例模式在使用普通创建对象时可以实现对象的单例 还存在两个问题 使用多线程可以破坏该单例模式使用反射可以破坏该单例模式 解决多线程破坏单例模式的方法 public class Layze{private volatile static Layze lay;private Layze(){}/**三重检测锁 DCL模式**/public static Layze getInstance(){if(lay null){synchorized(Layze.class){if(lzy null){lay new Layze(); }}}} }此时使用多线程破坏单例模式的问题已经可以解决 解决反射破坏单例模式的问题 public calss LayzeMan{private static volatile LayzeMan layze;private LayzeMan(){synchorized(LayzeMan.class){if(layze !null){throw new RuntimeException(不要试图使用反射去破坏我的单例模式);}}}public static LayzeMan getInstrence(){if(layze null){synchorized(LayzeMan.class){if(layze null){layze new LayzeMan();}}}return layze;} } class test{public static void main(String[] args){LayzeMan layzeMan LayzeMan.getInstrence();ConstructorLazyPJie declaredConstructor LazyPJie.class.getDeclaredConstructor(null);declaredConstructor.setAccessible(true);LazyPJie lazyPJie1 declaredConstructor.newInstance();System.out.println(lazyPJie);System.out.println(lazyPJie1);} } 此时会报错 Exception in thread main java.lang.reflect.InvocationTargetExceptionat java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)at com.itcast.designMode.single.Test01.main(LazyPJie.java:41) Caused by: java.lang.RuntimeException: 不要试图使用反射破坏单例模式此时还会有一个问题就是在类中判断对象是否为空时判断了有没有第一个对象用普通方式去创建对象的时候这个时候使用反射的时候就会报出异常但是此时如果两个对象都使用反射去创建就会出问题单例模式就会又被破坏 代码如下 public static void main(String[] args) throws Exception {/* LazyPJie lazyPJie LazyPJie.getInstance();*/ConstructorLazyPJie declaredConstructor LazyPJie.class.getDeclaredConstructor(null);declaredConstructor.setAccessible(true);LazyPJie lazyPJie1 declaredConstructor.newInstance();LazyPJie lazyPJie declaredConstructor.newInstance();System.out.println(lazyPJie);System.out.println(lazyPJie1);}解决完全使用反射破坏单例模式 public calss LayzeMan{private static volatile LayzeMan layze;private static boolean flag flase;private LayzeMan(){synchorized(LayzeMan.class){if(!flag){flag ture;}else{throw new RuntimeException(不要试图使用反射去破坏我的单例模式);}}}public static LayzeMan getInstrence(){if(layze null){synchorized(LayzeMan.class){if(layze null){layze new LayzeMan();}}}return layze;} } class test{public static void main(String[] args) throws Exception {/* LazyPJie lazyPJie LazyPJie.getInstance();*/ConstructorLazyPJie declaredConstructor LazyPJie.class.getDeclaredConstructor(null);declaredConstructor.setAccessible(true);LazyPJie lazyPJie1 declaredConstructor.newInstance();LazyPJie lazyPJie declaredConstructor.newInstance();System.out.println(lazyPJie);System.out.println(lazyPJie1);} }枚举天然的单例模式 package com.itcast.designMode.single;/*** author:hlc* date:2023/9/18*/ public enum EnumClass {ENUM_CLASS;public EnumClass getEnumClass(){return ENUM_CLASS;} } class Test03{public static void main(String[] args) {EnumClass enumClass EnumClass.ENUM_CLASS;} }静态内部类 package com.itcast.designMode.single;/*** author:hlc* date:2023/9/18*/ public class Holder {/*** 静态内部类实现单例模式*/private Holder(){}public static Holder getInstance(){return InnerClass.HOLDER;}public static class InnerClass{private static final Holder HOLDER new Holder();} } 工厂模式 实现了创建者和调用者的分离满足原则 开闭原则依赖倒转原则迪米特法则 实例化对象不使用new而是使用方法 简单工厂模式 package com.itcast.designMode.factory;public interface Car {void name(); } package com.itcast.designMode.factory;/*** author:hlc* date:2023/9/18*/ public class Tesila implements Car{Overridepublic void name() {System.out.println(特斯拉);} }package com.itcast.designMode.factory;/*** author:hlc* date:2023/9/18*/ public class WuLing implements Car{Overridepublic void name() {System.out.println(五菱);} } package com.itcast.designMode.factory;/*** author:hlc* date:2023/9/18*/ public class CarFactory {public static Car getCar(String name){if (name.equals(五菱)){return new WuLing();}else if (name.equals(特斯拉)){return new Tesila();}else {return null;}} } public static void main(String[] args) {Car car CarFactory.getCar(五菱);Car car1 CarFactory.getCar(特斯拉);car1.name();car.name();}
http://www.zqtcl.cn/news/774464/

相关文章:

  • 邢台企业手机网站建设汕头网站制作后缀
  • 微网站后台内容设置做网站语言排名2018
  • 嘉兴网站制作网站建设外贸营销推广平台有哪些
  • 网站开发集广州高端网站定制开发价格
  • 网站开发培训成都网站建设 报价单 doc
  • 苏州哪里有做淘宝网站的WordPress模板博客主题
  • 网站做中转做任务 网站
  • 深圳住房建设局网站网站的建设教程
  • 6免费建站的网站在线建筑设计
  • 哪些网站做任务可以赚钱的建设厅网站如何查询企业信息
  • 深圳网站设计+建设首选深圳市服装网站建设需求分析报告
  • 肥城网站制作浙江省建设厅信息港官网
  • 手机网站建设进度南宁企业网站设计
  • 建设学校网站方案大淘客网站上的推广怎么做
  • 哪个网站可以免费学设计南阳网站建设页面
  • 外贸公司建网站一般多少钱南京网站建设小程
  • 洛阳霞光做网站公司手机编程教学
  • 深圳正规网站建设公司顺德网页制作公司
  • 消防中队网站建设筑云电商网站建设公司
  • 天津网站建设天津中国东盟建设集团有限公司网站
  • 正版传奇手游官方网站宁波建设银行网站首页
  • 中铁建设集团招标网站wordpress区块编辑无法使用
  • 做电影网站需要的服务器配置网站关键词排名优化应该怎么做
  • 企业网站管理关键词你们懂的
  • 成都成华网站建设跟网站开发公司签合同主要要点
  • 手机搭建平台网站化工厂建设网站
  • 怎样建设自己网站的后台龙港哪里有做百度网站的
  • 西安做网站建设哪家好2345网址导航电脑版下载
  • 做暧暧小视频网站十大职业资格培训机构
  • 泰安网站建设优化营销策划是做什么