编程思想
_Yasin
苟有恒何必三更眠五更起 最无益莫过一日曝十日寒
展开
-
代理模式-Java动态代理的实现及应用
Java动态代理其实写日常业务代码是不常用的,但在框架层一起RPC框架的客户端是非常常见及重要的。spring的核心思想aop的底层原理实现就使用到了java的动态代理技术。 使用代理可以实现对象的远程调用以及aop的实现。 java的动态代理的实现,主要依赖InvoctionHandler(接口)和Proxy(类)这两个。下面是一个例子 实现的代理的一般需要有个接口package com.y原创 2017-06-03 17:45:31 · 603 阅读 · 0 评论 -
单例模式
单例模式其实是一个很简单的设计模式,其作用就是为了让某一个类的全局实例只有一个。 我认为这个模式在oop上思想的增加是很少的。但这个模式却是对多线程安全认知的一个很好的例子。这是我代码的demo单例github demo其实我代码中的注释也写的很明白了。 能保证线程安全的单例大概有三种写法。第一种: 双重检查就是SingletonDobuleCheck这个类的写法,使用了java内置的加锁机制,原创 2017-08-14 19:36:11 · 460 阅读 · 0 评论 -
命令模式
命令模式就是将方法(运算业务逻辑代码)进行封装,并将该方法传递给执行者,执行者不关心所执行的命令(业务代码)是如何实现的。 java的线程池就是命令模式的一个体现。1.示例deom说明 demo源码 demo中我使用的场景是遥控器要控制家里的电器设备。遥控器RemoteController的开关按钮只需要调用设置的命令的execute方法,而无需关注其如何实现。Command的实现类的exec原创 2017-08-21 00:28:36 · 705 阅读 · 0 评论 -
工厂模式
工厂模式中大概可分为三种:简单工厂,工厂方法,抽象工厂。 工厂模式的优点是让代码之家的依赖关系变少,降低项目耦合。简单工厂简单工厂可以说并不是一种设计模式,只是一种代码风格。 这是我写的一个简单工厂的例子简单工厂demo 这个工厂用来获取物品对象,利用多态实现这一个功能,如果代码中需要很多new操作,这样可以大大节省代码量和依赖关系,也让代码更加清晰。工厂方法headfirst中的定义:定义了原创 2017-08-10 00:48:10 · 507 阅读 · 0 评论 -
装饰者模式
定义动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案示例说明这是我github上的代码示代码talk is cheap,show your code 所以读者直接参考我github上的代码,我这里虚构了一个常见游戏场景,不同角色有自己的能力值,里面的武器也都有相应的能力,当角色装备后会增加其能力值。装饰者模式无论是被装饰与装饰组件,都需要继承自一个类,像代码中的Unit原创 2017-08-01 19:29:38 · 425 阅读 · 0 评论 -
观察者模式
定义定了了对象之间的一对多依赖,这样依赖,当一个对象改变状态时,它的所有依赖者都会受到通知并自动更新在具体实现中,开发者可以自己定义一整套观察者框架,也可以利用java提供的api实现这个模式自定义实现观察者模式观察者模式主要在解耦方面有巨大的作用,开发者可以自己实现整个观察者模式框架,一般会实现了观察者接口,这个接口的必需的一个方法是提供 主题(被观察者)状态发生变化时,需要调用的,像Observ原创 2017-08-01 19:28:20 · 638 阅读 · 1 评论 -
策略模式
定义首先给出《Head First设计模式》中的定义:策略模式定义了算法族,分别封装起来,让他们之间可以相互替代,此模式让算法的变化独立于使用算法的客户。这个定义还是很到位的,总的来说策略模式会让代码复用率很高,并且让代码更加规整简洁。像我实例代码中使用了游戏中常用的一个场景,我定义了一个抽象类Person,其具有自己描述和攻击两种方法;我也定义了一个攻击方式接口,每一种具体的攻击方式都实现了该接口原创 2017-08-01 19:26:50 · 358 阅读 · 0 评论 -
java回调思想
难得有时间,是时候写一篇java思想这一块了。随着自己的学习,越来越被OO的思想所折服!这里写一下在android用的最多也是最早就学了的回调思想。 button.setOnClickListener(new OnClickListener(){ @override public void click(){}}); 这就是回调,是不是恍然大悟,我们是多么常用的。像java中原创 2016-07-19 13:22:30 · 557 阅读 · 0 评论 -
认识java中线程安全问题
出现场景: 多个线程同时操作一个对象,如果该对象没有线程安全的控制,便会出现线程安全问题。例如:我们有一个类Apublic class A{ int count=0; public void add1000(){ for(int i=0;i<1000;i++){ count++; System.out.println(c原创 2017-03-16 16:32:33 · 550 阅读 · 0 评论 -
模板方法模式
定义&示例HeadFirst定义:在一个方法中定义了一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。其实就是将一些算法、业务步骤封装到一个方法中,使用者直接调用该模板方法,这样保证该步骤不会出错,减轻调用方压力。老规矩先放一个demo github传送门demo我假设了我们常用的12306买火车票场景。把下单支付环节抽象为一个模板方法原创 2017-09-17 22:45:41 · 405 阅读 · 0 评论