`
文章列表
在eclipse打开多个console窗口   以Socket为例:TestServer.java和TestClient.java分别表示服务器端和客户端。   如果你想要2个窗口,解决步骤:1.运行上述2个程序(它们需要不同的控制台)2.右击已经打开的Console窗口,选择Detached(控制台脱离eclipse,可以调整位置和大小)3.在Console的最右边有个Open Console下拉按钮,选中new console view。此时,又新建了一个Console,这个Console位置可能不在原来的地方,找到它,然后继续右击Detached,让它脱离4.在一个con ...
生产者-消费者(producer-consumer)问题,也称作有界缓冲区(bounded-buffer)问题,两个进程共享一个公共的固定大小的缓冲区。其中一个是生产者,用于将消息放入缓冲区;另外一个是消费者,用于从缓冲区中取出消息。问题出现在当缓冲区已经满了,而此时生产者还想向其中放入一个新的数据项的情形,其解决方法是让生产者此时进行休眠,等待消费者从缓冲区中取走了一个或者多个数据后再去唤醒它。同样地,当缓冲区已经空了,而消费者还想去取消息,此时也可以让消费者进行休眠,等待生产者放入一个或者多个数据时再唤醒它。 一,首先定义公共资源类,其中的变量number是保存的公共数据。并且定义两个方 ...
abstract class Father{ abstract void show(); } class Son extends Father { public void show(){ System.out.println("I am son."); } } public class start { public static void main(String[] args) { Father son=new Son(); son.show(); } } 输出结果为: I ...
弄了好几天,终于弄出来了。为了实现根据import递归扫描文本,必须获得绝对路径。 IEditorPart editor = Activator.getDefault().getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();IEditorInput input = editor.getEditorInput(); if (input instanceof IFileEditorInput) { IFile file = ((IFileEditorInput)input).getFile(); ...
新建---》plug-in Project--->输入名字--》next----》Rich Client Application上选择No------》plug-in with an editor-----》打完收工。
将画好的类图选中后,点击Tools--->java/j2ee---->generate code--->设置一下输出路径———>打完收工。 注意:生成的代码只是框架,具体的实现需要自己填代码。  
1.新建一个ROSE工程,选择J2EE模板,2.如图   3.在出现的界面中,CLASSPATH中加入源代码的目录,加入支持的包,点'ADD RECURSIVE'点 ‘SELECT ALL‘‘ 点REVERSE ‘,完成后没任何提示,点'DONE'结束。逆向工程完成。 4 逆向工程以后不会自动生成类图,但在logical view 和component view 里面按照你的java包结构会自动生成相应的包和类,要按照自己的要求建立类图。下面我们将所选包下的所有类显示在新建类图中: ROSE里新建CLASS DIAGRAM,然后把类包一个个拖到右侧图中,点菜单上的'QUERY ...
简单工厂 和 策略模式很像,二者都是采用 处理类聚合抽象类(父类)的方法。二者的区别是(以下两句话很重要): 简单工厂是 采用静态的类方法,通过传入的参数,返回参数所指定的所需要的子类(实际上是返回的是父类引用(父类引用指向子类对象))。 策略模式是 通过处理类的构造方法以参数的形式传入子类对象,然后再在处理类中写一个函数用来封装父类和子类共有的处理方法(strategy.Algo())。 由此可见,策略模式封装的更好。用户只需使用 处理类的对象(传入子类的对象)就可以操作相应子类实现他们的处理。
  应用场景   例如:假设有一组对象都实现同一个接口,实现同样的方法,但这组对象中有一部分对象需要有单独的方法,传统的笨办法是在每一个应用端都加上这个单独的方法,但是代码重用性低,耦合性高。   如果用代理的方法则很好的解决了这个问题。   代码示例 示例说明 假设有一个Italk接口,有空的方法talk()(说话),所有的people对象都实现(implements)这个接口,实现talk()方法,前端有很多地方都将people实例化,执行talk方法,后来发现这些前端里有一些除了要说话以外还要唱歌(sing),那么我们既不能在Italk接口里增加sing()方法,又 ...
DF对工厂方法模式的定义是:定义了一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。 工厂方法模式 对 简单工厂模式的改变在:将switch中的判断变成了一个个子类。 这样做虽然增加了很多类,但是它是有好处的。因为工厂方法更利于扩展,添加功能只需创建子类即可无需修改switch中的代码。   例如: interface IFactory { Operation CreateOperation(); }   class AddFactory extends IFactory { ppublic Oper ...
  public Context(String strategyType) { switch(strategyType) { case "算法A": strategy=new ContextStrategyA(); break; case "算法B": strategy=new ContextStrategyB(); break; ............... } }     DF对策略模式的定义是这样的:它定义了算法家族,分 ...
简单工厂模式很容易理解,在项目中用到了一个这样的例子。 AbstractUMLConnectionModel是一个抽象的父类,它的子类包括:GeneralizationModel,RealizationModel,DependencyModel,AggregationModel,CompositeModel。 那么好,接下类根据需要我们使用简单工厂实现获得需要的子类对象。(又是父类引用指向子类对象,可见这是多么的重要。)。注意抽象方法的引用也是可以的,接口的引用也可以这样用。 package com.jenson.vrp.editor.ir.model.operate; imp ...
装饰模式可以给一个对象动态的添加一些额外的职责(通过装载兄弟类对象的方式)。就增加功能来说,装饰模式比生成子类更加灵活。 接下来我举一个例子: Finery类是Person类的子类。 BigTrouser类和TShirt类是 Finery类的子类。 现在想给BigTrouser类的对象 添加穿TShirt的功能,就要采用装饰模式。 先上代码: package com.wjy.decorator; public class Person { private String name; public Person(){ } pub ...
解决的办法是:在EntityModel中不用 implements Ibodyinfo。而是实现getAdapter方法: public Object getAdapter(Class adapter){ if(adapter==Ibodyinfo.class) return new BodySource(this); return null; } 其中BodySource的代码如下; package com.wjy.understandinterface; public class BodySou ...
例如一个EntityModel类拥有很多属性信息:name,age,height,weight。 现在如果想使用其中的height和weight,可以定义一个接口Ibodyinfo package com.wjy.understandinterface; public interface Ibodyinfo { public abstract double getHeight(); public abstract double getWeight(); } 然后让EntityModel类去实现这个接口,就可以像一下这样获得height和weight信息了。 Ib ...
Global site tag (gtag.js) - Google Analytics