工厂模式和抽象工厂模式:

    1 、工厂模式:
    CPU 是接口, intel 继承就是IntelCPU , AMD继承它就是 AMDCpu
    mainBoard 是接口, intelMainBoard ,AMDMainBoard
    一个是 CPU工厂,一个而是主板工厂。
    2 、抽象工厂模式:
    CPUAndMainBoardFactory 是一个工厂接口,有 IntelFactory 和AMDFactory 。

    工厂模式,一个工厂生产一种东西。不同工厂产品的组合由你来实现。
    抽象工厂模式:一个工厂生产一种完整的产品,你只需找中你想要的工厂即可。

    各自的优缺点非常明显:
    工厂模式:原料来源充足,但是需要自己组装。
    抽象工厂模式:找到工厂就是找到产品,如果没有找到这样的工厂就没有产品,如果产品要添加功能,则工厂的产品线都要改变。

    观察者模式:
    观察者:界面, View 。被观察者:点击界面产生的回调。
    View view = new View ( callback),将 callback 注册到界面。
    view.click 时,回调 callback.do() 的方法。
    这就是观察者模式。

    单例模式:
    这种方法即节省空间时间,也保证线程安全。
    If( mInstance == null)
    {
    Syncronize(Singletom.class)
    {
    If(mInstance == null)
    {
    mInstance = new Singletom();
    }
    }
    }
    适配器模式:
    类适配器模式:
    Target接口, Adaptee 被适配者, Adapter extend Adaptee implement Targe t。
    在target 的方法中执行 adaptee 的方法外加自己的一些行为,就构成了适配。
    对象适配器:
    Target接口, Adaptee 被适配者, Adapter implement Target。
    在adapter 中有一个 adaptee 的对象,在 target的方法中执行 adaptee 的方法。这就是对象适配。

    代理模式:
    有点像适配器模式 ,代理者的操作当中既包含了真实的具体操作也添加了代理者自己的操作。 形象的例子就是:用户上网是通过网络代理完成的,网络代理不但完成用户的密码验证等具体的需要用户参与的操作,还有一些不需要用户参与的业务,但是又是必须的业务。

    • interface Network { // 定义 Network接口

    • public void browse(); // 定义浏览的抽象方法

    • }
      -
      - class Real implements Network { // 真实的上网操作

    • public void browse() { // 覆写抽象方法

    • System.out.println(“ 上网浏览信息! “);
      - }
      - }
      -
      - class Proxy implements Network { // 代理上网

    • private Network network;
      -
      - public Proxy(Network network) {// 设置代理的真实操作

    • this.network = network; // 设置代理的子类

    • }
      -
      - public void check() { // 身份验证操作

    • System.out.println(“ 检查用户是否合法! “);
      - }
      -
      - public void browse() {
      - this.check(); // 调用具体的代理业务操作

    • this.network.browse(); // 调用真实的上网操作

    • }
      - }
      -
      - public class ProxyDemo {
      - public static void main(String args[]) {
      - Network net = null; // 定义接口对象

    • net = new Proxy(new Real()); // 实例化代理,同时传入代理的真实操作

    • net.browse(); // 调用代理的上网操作

    • }
      - }