zoukankan      html  css  js  c++  java
  • 创建型设计模式

    饿汉式----单例模式
    public class Eager
    {
      private static final Eager eager=new Eager();
      private Eager(){}
      public static Eager getInstance()
      {
        return eager;
      }
    }

    懒汉式----单例模式
    public class Lazy
    {
     private static Lazy lazy=null;
     private Lazy(){}
     public static Lazy getInstance()
     {
      if(lazy==null)
        lazy=new Lazy();
      return lazy;
     }
    }

    简单工厂模式
    public interface Fruit
    {
     public abstract void wash();
     public abstract void eat();
    }
    public class apple implement Fruit
    {
     public void wash(){System.out.println("wash apple!");}
     public void eat(){System.out.println("eat apple");}
    }
    public class orange implement Fruit
    {
     public void wash(){System.out.println("wash orange!");}
     public void eat(){System.out.println("eat orange");}
    }
    public class Factory
    {
     public Fruit operater(string fruit)
     {
       switch(fruit)
        {
         case "apple":return new apple(); break; 
         case "orange":return new apple();break;
         default:break;
        }
     }
    }
    public class Client
    {
     public static void main(String[] args)
     {
       Factory factory=new Factory();
       Fruit fruit=factory.operater("apple");
       fruit.wash();
       fruit.eat();
     }
    }
    工厂方法模式
    interface Factory
    {
     public abstract Fruit getFruit();
    }
    interface Fruit
    {
     public abstract void wash();
     public abstract void eat();
    }
    public class Apple implements Fruit
    {
     public abstarct void wash()
     {
       System.out.println("wash apple!");
     }
     public abstract void eat()
     {
      System.out.println("eat apple!");
     }
    }
    public class Orange implements Fruit
    {
     public void wash()
     {
      System.out.println("wash orange!");
     }
     public void eat()
     {
      System.out.println("eat orange!");
     }
    }
    public calss AppleFactory implements Factory
    {
     public Fruit getFruit();
     {
       return new Apple();
     }
    }
    public class OrangeFactory implements Factory
    {
     public Fruit getFruit();
     {
      return new Orange();
     }
    }
    public class Client
    {
     public static void main(String[] args)
     {
      Factory factory=new AppleFactory();
      Fruit fruit=factory.getFruit();
      fruit.wash();
      fruit.eat();
     }
    }
    抽象工厂模式
    interface Tree
    {
     public abstract void plant();
     public abstract void cut();
    }
    public class BigTree implements Tree
    {
     public void plant()
     {
      System.out.println("plant bigtree!");
     }
     public void cut()
     {
      System.out.println("cut bigtree!");
     }
    }
    public class SmallTree implements Tree
    {
     public void plant()
     {
      System.out.println("plant SmallTree!");
     }
     public void cut()
     {
      System.out.println("cut SmallTree!");
     }
    }
    interface Fruit
    {
     public abstract void wash();
     public abstract void eat();
    }
    public class Apple implements Fruit
    {
     public abstract void wash()
     {
      System.out.println("wash apple!");
     }
     public abstract void eat()
     {
      System.out.println("eat apple!");
     }
    }
    public class Orange implements Fruit
    {
     public abstract void wash()
     {
      System.out.println("wash orange!");
     }
     public abstract void eat()
     {
      System.out.println("eat orange!");
     }
    }
    interface Factory
    {
     public abstract Tree getTree();
     public abstract Fruit getFruit();
    }
    public class Factory1 implements Factory
    {
     public Tree getTree()
     {
      new BigTree();
     }
     public Fruit getFruit()
     {
      new Apple();
     }
    }
    public class Factory2 implements Factory
    {
      public Tree getTree()
      {
        new SmallTree();
      }
      public Fruit getFruit()
      {
        new Orange();
      }
    }
    public class Client
    {
      public static void main(String[] args)
      {
       Factory factory=new Factory1();
       Tree tree=factory.getTree();
       Fruit fruit=factory.getFruit();
       tree.plant();
       tree.cut();
       fruit.wash();
       fruit.eat();
      }
    }
    建造者模式
    将内部表象与构造过程分开,已建造汽车为例
    public class Car
    {
      public string cardoor;
      public string carwheel;
      public string engine;
      public void go()
      {
       System.out.println("go over!");
      }
    }
    interface Creator
    {
     public abstract void AddDoor();
     public abstract void AddWheel();
     public abstract void AddEngine();
     public abstract Car getInstance();
    }
    public class CreateCar implements Creator
    {
     public Car car;
     public CreateCar(Car car)
     {
      this.car=car;
     }
     public void AddDoor()
     {
       car.cardoor="door";
     }
     public void AddWheel()
     {
       car.carwheel="wheel";
     }
     public void AddEngine()
     {
       car.engine="engine";
     }
     public Car getInstance()
     {
      return car;
     }
    }
    public class Director
    {
      public Creator create=new CreateCar();
      public Car sendOrder()
      {
        return create.getInstance();
      } 
    }
    public class Client
    {
     public static void main(String[] args)
     {
      Director director=new Director();
      Car car=director.SendOrder();
      car.go();
     }
    }
    原型模式
    允许一个对象复制一个定制的对象
    interface Protery extends Cloneable
    {
     public abstract Protery clone();
    }
    public class Pro extends protery
    {
     public Object clone()
     {
       try
        {
          return super.clone();
        }
        catch(CloneNotSupportedException e)
        {
          return null;
        }
     }
    }
    public class Client
    {
     public Protery operator(Protery example)
     {
      return (Protery)example.clone();
     }
    }
    public class Test
    {
     public static void main(String[] args)
     {
       Client client=new Client();
       Protery protery=new Pro();
       client.operator(protery);
     }
    }

  • 相关阅读:
    js中disabled属性
    ajax 失焦点局部刷新 判断是否存在
    java 常见异常总结
    struts2+spring+hibernate 分别是做什么?
    武汉·骑行·摄影
    [转]基于粒子滤波的物体跟踪
    [转]Chrome插件:下载YouTube视频
    windows下GSL的配置
    图像处理和计算机视觉中的经典论文
    终于在我电脑上跑通ZK大神给的TLD代码了
  • 原文地址:https://www.cnblogs.com/jinzhengquan/p/1933579.html
Copyright © 2011-2022 走看看