一、接口介绍:
1、
/** * 代表本系统需要开发的网站的基本操作,比如注册、登录、发布等这些一般需要开发的操作。 * 除了本接口还有有一些辅助接口,比如{@link InteractAble},他们的共同目的都是为了 完善网站需要的操作。 * <p> * 实现该接口,系统将会在你在表现层上触发相应事件的时候调用本接口的相应方法, 比如你点击了<i>注册</i> * 按钮后,将会触发{@code register()}方法。 * * @author ocq * @since 1.0 * @see com.cloudssaas.website.core.InteractAble * @see com.cloudssaas.website.core.IEmailInfoGeter */ public interface WebSiteOperable {
2、
/** * 提供会员间互动操作,包括但不限于 <i>打招呼、加好友、留言、访问主页、收听、采集用户</i>。 * * @author ocq * @since 1.0 * @see com.cloudssaas.website.core.WebSiteInteface * @see com.cloudssaas.website.core.IEmailInfoGeter */ public interface InteractAble {
3、
/** * {@code IEmailInfoGeter}接口用来获取邮件中的激活地址或者是邮件中的用户名密 码等信息 * <p> * 当你需要获取这些信息的时候请实现该接口,系统会把所有实现了该接口的类的实现 方法进行调用一遍,并且把邮件信息传递给这些实现类的实现方法 * <p> * 并不是只要需要获取激活地址/用户信息就需要实现该接口,该接口只是为精准的获取而存在的。 * 系统会获取常见的激活地址/用户信息,当你发现某个实现类系统无法获取到这些信息的时候就需要实现该 接口,并用相应方法获取你想要的信息 * * @author ocq * @since 1.0 * @see com.cloudssaas.website.core.InteractAble * @see com.cloudssaas.website.core.WebSiteInteface */ public interface IEmailInfoGeter {
4、
/** * 定义一些执行任务需要实现的接口。当添加一个功能(比如注册、登录..)的时候请实现该接口 * * @author ocq */ public interface TaskExecuter {
二、关键类介绍:
1、
/** * 网站操作骨架类,实现、封装了实现网站的相关功能需要的资源、操作、定义了一些模板方法。如果需要对一个 网站进行注册、登录、发布、回复、加好友、留言等(剩下的操作具体看接口)操作, * 请继承该类、或该类的子类,实际上本系统的上层编程也是主要基于本类进行的,而并非{@link WebSiteOperable}、 * {@link InteractAble}等接口 * * <p> * 本类已经比较臃肿,以后版本正在慢慢减肥,把可以组合实现的代码重构出去,由此可知, 新增的代码也应该遵循这个规则,避免子类继承过多无用信息。 * * @author ocq * @since 1.0 */ public abstract class AbstractWebSiteOperater implements WebSiteOperable, InteractAble {
以及其子类们
2、
/** * 任务操作/执行骨架类,且属于gof命令模式的抽象命令,其子类是具体命令,实现、封装了任务操作/执行的相关功能需要的资源、操作、定义了一些模板方法。 * 当添加一个功能(比如注册、登录..)的时候请继承该类或其子类 * * @author ocq */ public abstract class AbstractTaskCommand extends Thread implements TaskExecuter {
以及其子类们
3、
/** * 任务调度者/管理者,负责收集和分配任务(命令),设计成单例。 * * @since 1.0 * @author ocq */ public class TaskDispatcher extends Thread implements TaskDispatchable {
4、
/** * gof享元模式中的工厂,实现创建管理任务对象,结合反射进行任务对象的创建。 本类只负责对象创建的管理, * 从本类先后获取的两个对象,可能是同一个内存地址,如果内存地址相同,可以判定是否在使用,如果已经不使用了就可以进行复用。 * * @since 1.0 * @author ocq * @see AbstractTaskCommand */ public class TaskCommandFactory {
5、
/** * gof享元模式中的工厂,创建和管理网站操作者,结合反射进行网站操作对象的创建。 * * @since 1.0 * @author ocq * @see AbstractWebSiteOperater */ public class WebSiteOperaterFactory {
6、
/** * 验证码处理的控制者,是所有验证码处理的入口,也是所有验证码分配的控制中心。 * * @since 1.0 * @author wzw * @author ocq * @see QuestionVerify */ public class CaptchaVerify {
7、
/** * Cookies的管理类 * @author ocq */ public class Cookies implements Cloneable {
8、
/** * 网站处理框架的特有工具类,为实现组合解耦而生,比如外界想获取任务类型,可以在此类获取。 * * @author ocq */
9、
/** * 本类是用得最多的表单类,其他的都是比较少用的,如果本类解决不了的时候才考虑用个其他的 * 常见表单用{@code Forms}类,上传头像的时候用{@link FileForms},如果需要自定义表单,那么请用{@link CustomForms} * @since 1.0 * @author ocq * @see FileForms * @see CustomForms */ public class Forms {
10、
/** * 上传图片的时候用{@code FileForms},其他一般的表单用{@link Forms}类,如果需要自定义表单,那么请用{@link CustomForms} * @since 1.0 * @author ocq * @see Forms * @see CustomForms */ public final class FileForms {
11、
/** * 自定义表单类型,如果需要自定义表单,那么请用{@code CustomForms},其他一般的 * 表单用{@link Forms}类,上传图片的时候用{@link FileForms} * @since 1.0 * @author ocq * @see Forms * @see FileForms */ public class CustomForms {
12、
/* * 简单的缓存机制,用来缓存一些创建需要耗很多资源的对象、数据。 * 背景知识: 强引用在任何情况下都不会被回收而 * 对于SoftReference而言它被GC回收的条件就没那么严格了, * 如果一个对象当前最强的引用是软引用,并且JVM的内存充足, * 垃圾回收器是不会回收的该对象的。只有在内存比较吃紧的情况下GC才会回收被软引用指向的对象, * 从这个特点我们就看出了软引用可以用来做一些高速缓存,配合LRU策略更好。今天我就自己写一个玩玩。 * * 而对于SoftReference而言它被GC回收的条件就没那么严格了, * 如果一个对象当前最强的引用是软引用,并且JVM的内存充足, * 垃圾回收器是不会回收的该对象的。 * 只有在内存比较吃紧的情况下GC才会回收被软引用指向的对象, * 从这个特点我们就看出了软引用可以用来做一些高速缓存,配合LRU策略更好。 * */ public class ReferenceCache<K, T> {
时间: 2024-10-22 01:00:40