文章列表
吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘而得到,而这对数字各包含乘积的一半位数的数字,其中从最初的数字中选取的数字可以任意排序。以两个0结尾的数字是不允许的,例如,下列数字都是“吸血鬼”数字:
1260 = 21 * 60
1827 = 21 * 87
2187 = 27 * 81
程序示例:
package ThinkingInJava;
public class VampireNumber {
public static void main(String[] args) {
int[] orgDigit = new in ...
1.名词解释
观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有观察者对象,使它们能够自动更新自己。
2.代码示例
通知者接口
package DesignPattern.ObserverPattern;
public interface IObserver {
public void updateState();
}
观察者接口
package DesignPattern.ObserverPattern;
public interface IObserver {
publi ...
1.名词解释
模板方法:定义一个操作中的算法的框架,而将一些步骤延迟到子类中,模板方法可以使子类可以不修改一个算法框架的前提下即可重构该方法的某些特定步骤。模板方法通过把不变行为搬到父类,去除子类中的重复代码。
2.代码示例
模板方法抽象类
package DesignPattern.TemplateMethod;
public abstract class TemplateMethod {
public abstract void primitiveMethod1();
public abstract void primitiveMethod2(); ...
1.名词解释
工厂方法模式,定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
2.代码示例
工厂接口
package DesignPattern.FactoryMethodPattern;
public interface IFactory {
public Operation createOperation() ;
}
加法工厂
package DesignPattern.FactoryMethodPattern;
public class AddFactory implements IFactor ...
1.名词解释
代理模式:为其他对象提供一种代理以控制对这个对象的访问。主要有三种,1.远程代理,也就是为一个对象在不同的地址空间提供拒不代表,这样可以隐藏一个对象存在于不同地址空间的事实;2.虚拟代理,是根据要创建开销很大的对象,通过它来存放实例化需要很长时间的真实对象。2.安全代理,用来控制真实对象访问时的权限。
2.代码示例
package DesignPattern.ProxyPattern;
public abstract class Subject {
public abstract void request();
}
真实对象
package ...
1.名词解释:
装饰模式:动态的给一个对象添加一个额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。装饰模式是为已有功能动态地添加更多功能的一种方式。
2.代码示例:
组件类:
package DesignPattern.DecoratorPattern;
public abstract class Component {
public abstract void operation();
}
具体的对象接口类
package DesignPattern.DecoratorPattern;
public class ConcreateCo ...
1.名词解释:
策略模式:它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的用户。在不同的时间或条件应用不同的业务规则时,可以考虑使用策略模式;
2.代码示例:
策略抽象类
package DesignPattern.StrategyPattern;
public abstract class Strategy {
public abstract void Execute();
}
具体策略类A
package DesignPattern.StrategyPattern;
public class C ...
1.名词解释:
访问者模式:标识一个作用于某对象结构中的各元素的操作。它可使你在不改变各元素的前提下作用于这些元素的新操作。
2.代码示例:
访问者抽象类
package DesignPattern.VisitorPattern;
public abstract class Visitor {
public abstract void VisitConcreateElementA(ConcreateElementA concreateElementA);
public abstract void VisitConcreateElementB(Concr ...
享元模式:运用共享技术有效地支持大量细粒度的对象。主要用于避免大量非常相似类的开销。在很多程序设计中,有时需要生成大量细粒度的类实例来表示数据,这时候可以采用享元模式来共享这些类实例,从而减少这些实例的数量。
代码示例:
享元抽象类:
package DesignPattern.FlyweightPattern;
public abstract class Flyweight {
public abstract void Operate(int i);
}
具体享元类:
package DesignPattern.FlyweightPattern;
...
1.名词解释:
中介者模式:用一个中介对象来封装一序列的对象交互。中介者使各对象不需要显式地引用,从而使其耦合松散,而且可以独立第改变它们之间的交互。
2.代码示例:同事A、同事B通过中介者互相通信。
主控程序类,通过中介者,ColleagueA与ColleagueB进行通信
package DesignPattern.MeditorPattern;
public class Client {
public static void main(String[] args) {
ConcreateMeditor m = new ConcreateMeditor( ...
1.名词解释:
职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接收者自己的耦合关系。将这个对象连成一条链,并沿着这条链传递该对象,直到有一个对象处理它为止。
2.代码示例:
处理抽象类
package DesignPattern.DutyChain;
import java.util.HashMap;
public abstract class Handler { protected Handler successor; public void setSuccessor(Handler handler) { this.successor = h ...
1.名词解释: 命令模式:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。 代码: 抽象命令类: package CommandPattern;
public abstract class Command { protected Receiver receiver; public Command(Receiver receiver) { this.receiver = receiver; } public abstract void execute();}具体命令类: packag ...
单例模式:保证一个类仅有一个实例,并提供一个访问她的全局访问点。
有懒汉式与饿汉式之分:
1.懒汉式:
public class Singleton {
private static Singleton instance = null;
private Singleton() {
}
public static synchronized Singleton getInstance() {
if(instance == null) {
synchronized(synchronized.class) {
...