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

ppt网站建设答案怎样做关于自己的网站

ppt网站建设答案,怎样做关于自己的网站,网站怎么快速做收录,wordpress编辑器添加java设计模式类型创建型模式#xff1a;将对象的创建与使用分离结构型模式#xff1a;如何将类和对象按照某种布局组成更大的格局行为型模式#xff1a;用于描述类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务23种设计模式介绍1.单例#xff08;Singleton将对象的创建与使用分离结构型模式如何将类和对象按照某种布局组成更大的格局行为型模式用于描述类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务23种设计模式介绍1.单例Singleton模式某个类只能生成一个实例该类提供了一个全局访问点供外部获取该实例其拓展是有限多例模式。2.原型Prototype模式将一个对象作为原型通过对其进行复制而克隆出多个和原型类似的新实例。3.工厂方法Factory Method模式定义一个用于创建产品的接口由子类决定生产什么产品。4.抽象工厂AbstractFactory模式提供一个创建产品族的接口其每个子类可以生产一系列相关的产品。5.建造者Builder模式将一个复杂对象分解成多个相对简单的部分然后根据不同需要分别创建它们最后构建成该复杂对象。6.代理Proxy模式为某对象提供一种代理以控制对该对象的访问。即客户端通过代理间接地访问该对象从而限制、增强或修改该对象的一些特性。7.适配器Adapter模式将一个类的接口转换成客户希望的另外一个接口使得原本由于接口不兼容而不能一起工作的那些类能一起工作。8.桥接Bridge模式将抽象与实现分离使它们可以独立变化。它是用组合关系代替继承关系来实现从而降低了抽象和实现这两个可变维度的耦合度。9.装饰Decorator模式动态的给对象增加一些职责即增加其额外的功能。10. 外观Facade模式为多个复杂的子系统提供一个一致的接口使这些子系统更加容易被访问。11. 享元Flyweight模式运用共享技术来有效地支持大量细粒度对象的复用。12. 组合Composite模式将对象组合成树状层次结构使用户对单个对象和组合对象具有一致的访问性。13. 模板方法TemplateMethod模式定义一个操作中的算法骨架而将算法的一些步骤延迟到子类中使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。14. 策略Strategy模式定义了一系列算法并将每个算法封装起来使它们可以相互替换且算法的改变不会影响使用算法的客户。15. 命令Command模式将一个请求封装为一个对象使发出请求的责任和执行请求的责任分割开。16. 职责链Chain of Responsibility模式把请求从链中的一个对象传到下一个对象直到请求被响应为止。通过这种方式去除对象之间的耦合。17. 状态State模式允许一个对象在其内部状态发生改变时改变其行为能力。18. 观察者Observer模式多个对象间存在一对多关系当一个对象发生改变时把这种改变通知给其他多个对象从而影响其他对象的行为。19. 中介者Mediator模式定义一个中介对象来简化原有对象之间的交互关系降低系统中对象间的耦合度使原有对象之间不必相互了解。20. 迭代器Iterator模式提供一种方法来顺序访问聚合对象中的一系列数据而不暴露聚合对象的内部表示。21. 访问者Visitor模式在不改变集合元素的前提下为一个集合中的每个元素提供多种访问方式即每个元素有多个访问者对象访问。22. 备忘录Memento模式在不破坏封装性的前提下获取并保存一个对象的内部状态以便以后恢复它。23. 解释器Interpreter模式提供如何定义语言的文法以及对语言句子的解释方法即解释器常用设计模式单例模式定义在有些系统中为了节省内存资源、保证数据内容的一致性创建一个实例共大家享用例如Runtime类特点单例只有一个实例对象该单例对象必须由单例类自行创建单例类对外提供一个公共的方法进行访问饿汉模式在这里拿window为例给大家进行演示public class Window {/*饿汉式单例在类加载的时候的初始化实例static* 因为创建的实例只有一个所以不存在线程安全问题*/private static Window windownew Window();public Window getWindow(){return window;} }public class Test {public static void main(String[] args) {for (int i 0; i 10; i) {new Thread(()-{System.out.println(new Window().getWindow());//获得是同一个对象}).start();}} }懒汉模式public class Window {/*懒汉式单例* 在类加载的时候不创建对象在使用时进行创建* 这时生成对象的数量就需要我们自己来进行控制* 但是懒汉式单例会出现线程安全问题在多线程访问时可能会有多个线程同时进行到if中就会创建出多个对象* 在并发的时候会出现指令重排的情况所以用volatile防止指令重排避免造成错误*/private static volatile Window window;public Window getWindow(){try {//增加休眠增加并发的几率Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}//1.0版本给方法上锁虽然可行但是效率太低每次只能运行一个线程// if(windowsnull){ 1.1版本 进入if之后上锁这种上锁起不到多个线程公用一个对象实例的作用一个执行完之后另外一个线程进入重新创建一个实例对象// synchronized (Windows.class){// windownew Window()} //}//最终版本双重判断公用一个对象实例if(windownull){synchronized (Window.class){if (windownull){windownew Window();}}}return window;} }public class Test {public static void main(String[] args) {for (int i 0; i 10; i) {new Thread(()-{System.out.println(new Window().getWindow());}).start();}} } 工厂模式简单工厂适用于产品子类较少不符合开闭原则模式中包含的角色及其职责工厂负责逻辑运算以及创建所需要的产品抽象产品描述所有实例共有的接口或者是抽象类具体产品抽象是简单工厂的创建目标代码实现//Car接口 public interface Car {void run(); }//CarFactory工厂类 public class CarFactory{public static Car createCar(String name){if(name.equals(aodi)){return new Aodi();}if(name.equals(bmw)){return new Bmw();}return null;} }//实现类 public class Aodi implements Car{Overridepublic void run() {System.out.println(奥迪汽车行驶);} }//实现类 public class Bmw implements Car{Overridepublic void run() {System.out.println(宝马汽车行驶);}}//客户端 public class Test {public static void main(String[] args) {//每次增加子类类型的时候需要对代码进行修改不符合开闭原则适用于子类较少或者是不容易修改的项目中//优点客户端不负责对象的创建由专门的工厂进行创建客户端直需要对对象进行调用实现创建和调用的分离降低了代码的耦合度//缺点如果增加或减少子类需要对代码进行修改违背了设计原则中的开闭原则如果子类过多会导致工厂非常庞大违背了高内聚原则不利于后期的维护Car bmw CarFactory.createCar(bmw);Car aodi CarFactory.createCar(aodi);bmw.run();aodi.run();} }工厂方式模式对工厂也进行了抽象,将实际创建工作推迟到子类去完成优点客户端不负责创建对象的创建而是由专门的工厂类完成客户端只负责对象的调用实现了创建和调用的分离降低了客户端代码的难度若增加和减少产品子类不需要对工厂进行修改直需要增加产品子类和工厂子类符合开闭原则即使产品子类过多也不会导致工厂类的庞大利于后期的维护缺点需要些额外的代码增加了工作量抽象工厂模式将同一品牌的物品放在一起进行生产就好比你去生产联的大厂中既可以买到联想手机也可以买到联想电脑不用将它们分别生产造成资源浪费优点获取具体系列产品只需要通过具体的系列的工厂获取无心关心创建的细节原型模式在项目中我们需要很多个实例但是创建实例对象又很麻烦所以觉得直接创建对象是一个不太明智的选择所以我们经常在需要多次创建相同的对象的时候用到克隆clone,为了提高创建速度代理模式代理模式就是给一个对象提供一个代理并由代理对象控制对原对象的引用使得客户不能直接与真正的目标对象通信代理对象是对象的代表客户端通过代理对象对实际对象进行操作静态代理特点代理类实现一个接口任何实现给接口的对象都可以通过代理类进行代理增加了通用性优点可以做到在符合开闭原则的情况下对目标对象进行功能扩展缺点代码量大必须要有接口再有代理//Computer对象类 public class Compurter implements Huawei{Overridepublic void run() {System.out.println(华为电脑跑步机器);}Overridepublic void play() {System.out.println(华为电脑在玩);} }//customer客户端 public class customer {public static void main(String[] args) {Phone phonenew Phone();Compurter compurternew Compurter();Proxy proxy1new Proxy(phone);Proxy proxynew Proxy(compurter);proxy.play();proxy1.run();}}//Huawei接口 public interface Huawei {public void run();public void play(); }//Phone对象类 public class Phone implements Huawei{Overridepublic void run() {System.out.println(华为手机在跑步);}Overridepublic void play() {System.out.println(华为手机在玩);}}//Proxy代理对象 public class Proxy implements Huawei {Huawei huawei;public Proxy(Huawei huawei){this.huaweihuawei;}Overridepublic void run() {try {System.out.println(你是大坏蛋);} catch (Exception e) {} finally {System.out.println(终于完了);}}Overridepublic void play() {huawei.play();} }动态代理通过动态代理我们就不需要手动的创建代理类了只需要编写一个动态处理就可以了代理对象通过动态处理jdk动态代理public class JdkProxy implements InvocationHandler {Object object;//真实对象接收任何的目标类对象public JdkProxy(Object object){this.objectobject;}/* 在动态代理类中调用目标类中的具体方法动态的将代理对象对象* 目标类中要调用方法以及方法中的参数传递过来* Method method 动态获取的真正要执行的方法*/Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {method.invoke(object);return proxy;}//真正意义上的运行时生成代理对象public Object getProxy(){return Proxy.newProxyInstance(object.getClass().getClassLoader(), object.getClass().getInterfaces(),this);} }cg动态代理/** 动态代理类*/ public class CGLibProxy implements MethodInterceptor {private Enhancer enhancer new Enhancer();public Object getProxy(Class? clazz){ enhancer.setSuperclass(clazz); enhancer.setCallback(this); return enhancer.create(); } /** 拦截所有目标类方法的调用 * 参数 * obj 目标实例对象 * method 目标方法的反射对象 * args 方法的参数 * proxy 代理类的实例 */ public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable {//代理类调用父类的方法 System.out.println(开始事务); Object obj1 proxy.invokeSuper(obj, args); System.out.println(关闭事务); return obj1; } }
http://www.hkea.cn/news/14495814/

相关文章:

  • 注册域名网站备案天津品牌网站设计
  • js网站统计代码网站设计论文摘要
  • 橫山区建设局网站企业网站轮播图怎么做
  • 网站建设早会说什么无锡关键词优化价格
  • 凡科网登录入口注册上海谷歌seo推广公司
  • 南昌做网站的公司免费微信小程序制作软件
  • 南京网站建设优化中国建设官方网站企业
  • asp建站系统源码宜昌网页设计
  • 长沙高新区建设局网站网页定制开发费用
  • 查找网站域名雄安建设集团有限公司网站
  • 电工证如何做的相关网站能查到优秀的摄影作品网站
  • 网上做兼职老师的正规网站个人域名备案需要什么资料
  • 用网站做淘客怎么做公司网站怎么建立优化体系
  • 网站服务器怎么更换做花藤字网站
  • 校园网站做自己的广告网站关键词多少个好
  • 网站建设推广好做吗南京自适应网站
  • 做弹幕网站如何建设网站简介
  • 网站选项卡代码免费软件的定义
  • 东莞网站建设制作英语培训学校网站怎么做
  • 国家森林公园网站建设小程序商店官网
  • 福田网站 建设seo信科wordpress建站模版
  • 网站建设勹金手指下拉建个公司网站需要多少钱
  • 少数民族网站建设不知名网站开发
  • 做评测好的视频网站网站提交 入口
  • 网站建设视频百度云做外汇网站卖判刑多少年
  • 手表哪个网站正品电话怎么做网站域名
  • 企业应该如何建设网站汉中网络推广
  • 申请自己的网站空间asp.net企业网站设计
  • 商城网站制作 价格杭州响应式网站制作
  • 番禺网站建设服务哪里建设网站不需要备案