`
lichaozhangobj
  • 浏览: 98734 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintStream; import java.net.Socket; public class EchoThread implements Runnable { private Socket client = null; public EchoThread(Socket client) { this.client = cli ...
synchronized 关键字可以保证同一时刻,只有一个线程可以执行某一个方法,或是某一个代码块。 它包含两个特征:1、互斥 2、可见。即同步不仅可以阻止一个线程看到对象处于不一致的状态中,还可以保证进入同步方法或者同步代码块的每个线程,都看到由同一个锁保护的之前所有的修改效果。 java语言规范保证读或者写一个变量时原子的,除非这个变量的类型为long或者double。 读取一个非long或double类型的变量,可以保证返回的值是某个线程保存在该变量中的,即使多线程在没有同步的情况下并发的修改这个变量也是如此。       虽然语言规范保证 ...
eclipse指定android sdk 路径时出现 could not find adb.exe 解决办法: 复制android-sdk-windows\platform-tools文件夹下 adb.exe ,AdbWinApi.dll ,AdbWinUsbApi.dll 三个文件到android-sdk-windows\tools 目录下即可
看了很久感觉理解不太好!   调停者模式包装了一系列对象的相互作用的方式,使得这些对象不必互相明显的引用。从而他们可以较松散地耦合。当这些对象中的某些对象之间的相互作用发生变化时,不会立即影响到其他的一些对象之间的相互作用。从而保证这些相互作用可以彼此独立地变化 。   在调停者模式中,所有的成员对象都可以协调工作,但是又不直接相互管理。这些对象都与一个处于中心地位的调停者对象发生紧密的关系,由这个调停者对象进行协调工作。这个协调者就是调停者(Mediator),而调停者所协调的成员对象就是同事(Colleague)对象。   在Colleague对象内部发生的事件会影响到所有 ...
访问者模式的目的是封装一些施加于某种数据结构元素之上的操作。一旦这些操作需要修改的话,接收这个操作的数据结构则可以保持不变。 访问者模式的组成结构:   1) 访问者角色(Visitor):为该对象结构中具体元素角色声明一个访问操作接口。该操作接口的名字和参数标识了发送访问请求给具体访问者的具体元素角色。这样访问者就可以通过该元素角色的特定接口直接访问它。   2) 具体访问者角色(Concrete Visitor):实现每个由访问者角色(Visitor)声明的操作。   3) 元素角色(Element):定义一个Accept操作,它以一个访问者为参数。   4) 具体元素角色 ...

java静态分派

    博客分类:
  • java
静态分派发生在编译时期,分派根据静态类型信息发生。方法重载就是静态分派   public class BlackHorse implements Horse{ }   public class BlackHorse implements Horse{ }   public class WhiteHorse implements Horse { }   public class Mozi { public void ride(Horse h){ System.out.println("Riding a horse" ...
状态模式允许一个对象在其内部状态改变的时候改变其行为。他把所研究的对象的行为包装在不同的状态对象里,每一个状态对象都属于一个抽象状态类的一个子类。状态模式的意图是让一个对象在其内部状态改变的时候,其行为 ...
 备忘录(Memento)模式又称标记(Token)模式。GOF给备忘录模式的定义为:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 /** * 发起人角色 */ public class Originator { private String state; /** * 工厂方法返回一个新备忘录对象 */ public MementoIF createMemento() { return new Memento(this.state) ...

命令模式

命令模式把一个请求或者操作封装到一个对象中。他把发出命令的责任和执行命令的责任分割开,委派给不同的对象 每一个命令都是一个操作:请求的一方发出请求要求执行一个操作;接收的一方收到请求,并执行操作。命令模式允许请求的一方和接收的一方独立开来,使得请求的一方不必知道接收请求的一方的接口,更不必知道请求是怎么被接收,以及操作是否被执行、何时被执行,以及是怎么被执行的   /** * 请求者角色 */ public class Keypad { private Command playCmd; private Command rewindCmd; pri ...

责任链模式

责任链模式里,很多对象由每一个对象对其下家的引用二连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,使得系统在不影响客户端的情况下动态地重新组织链和分配责任   纯与不纯的责任链模式 一个纯的责任链模式要求一个具体的处理者对象只能在两个行为中选择一个: 一个是承担责任,二是把责任推给下一家。不允许出现某一个具体处理对象在承担了一部分责任后又把责任向下传的情况   在一个纯的责任链模式里面,一个请求必须被某一个处理者对象所接收;在一个不纯的责任链模式里面,一个请求可以最终不被任何接收端对象所接收 ...
迭代子模式可以顺序地访问一个聚集中的元素而不必暴露聚集的内部表象,就是为不同的聚集提供相同的遍历方式,使得客户端只需要关注迭代接口,而不需要关注所迭代的聚集的具体结构 聚集和Java聚集多个对象聚在一起形成的总体称之为聚集(Aggregate),聚集对象是能够包容一组对象的容器对象。聚集依赖于聚集结构的抽象化,具有复杂性和多样性,数组就是最基本的聚集,也是其他Java聚集对象的设计基础。 Java聚集(Collection)对象是实现了共同的java.util.Collection接口的对象,是Java语言对聚集的概念的直接支持。 为什么聚集需要迭代子聚集对象必须提供适当的方法,允许客户端 ...
观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化,会通知所有观察者对象,使他们能自动更新自己   import java.util.Observable; public class House extends Observable { private int price = 1000000; public void modifyRoomRate(int price) { this.price += price; super.setChanged(); ...
一个抽象类,将部分逻辑以具体方法以及构造子的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现   public abstract class Account { protected String accountNumber; public Account() { } public Account(String accountNumber) { this.accountNumber = accountNumber; } / ...
策略模式用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得他们可以相互替换 一个系统需要动态地在几种算法中选择一种。那么这些算法可以包装到一个个的具体算法里面,而这些具体算法类都是一个抽象算法类的子类。就是这些具体算法类均有统一的接口,由于多态性原则,客户端可以选择使用任何一个具体算法类,并只持有一个数据类型是抽象算法类的对象 如果在一个系统里面有许多类,他们之间的区别仅在于他们的行为,那么使用策略模式可以动态地让一个对象在许多行为中选择一种行为 一个系统的算加法使用的数据不可以让客户端知道。策略模式可以避免让客户端涉及到不必要接触到的只与算法有关的数据 如果一个对 ...

不变模式

一个对象的状态在对象创建之后就不再变化,这就是不变模式 不变模式有两种状态:一种是弱不变模式,另一种是强不变模式   弱不变模式:一个类的实例的状态是不可变化的,但是这个类的子类的实例具有可能变化的状态 第一,所考虑的对象没有任何方法会修改对象的状态 第二,所有的属性都应当是私有的 第三,这个对象所引用到的其他对象如果可变对象的话,必须设法限制外界对这些可变对象的访问,防止外界修改这些对象。如果可能,应当尽量在不变对象内部初始化这些被引用到的对象,而不要在客户端初始化,然后再传入到不变对象内部来。如果某个可变对象必须在客户端初始化,然后再传入到不变对象里的话,就应当考虑在不变对象初始 ...
Global site tag (gtag.js) - Google Analytics