设计模式

设计模式之六大原则(转载) - 海 子 - 博客园

设计模式 | 菜鸟教程--------------突然发现这个写的很详细不错

代码下载:GitHub - jiajia154569836/Designpattern: 设计模式

建议:只记忆main方法推理模式中的类和接口强化记忆

工厂模式

属于创建型模式,它提供了一种创建对象的最佳方式。

优点: 1、一个调用者想创建一个对象,只要知道其名称就可以了。 2、扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以。 3、屏蔽产品的具体实现,调用者只关心产品的接口。

缺点:每次增加一个产品时,需要增加一个类实现接口并且修改工厂类中的方法来new这个类。


设计模式_第1张图片


public class FactoryPatternDemo {

  public static void main(String[] args) {

      ShapeFactory shapeFactory = new ShapeFactory();

      //获取 Circle 的对象,并调用它的 draw 方法

      Shape shape1 = shapeFactory.getShape("CIRCLE");

      //调用 Circle 的 draw 方法

      shape1.draw();

      //获取 Rectangle 的对象,并调用它的 draw 方法

      Shape shape2 = shapeFactory.getShape("RECTANGLE");

      //调用 Rectangle 的 draw 方法

      shape2.draw();

      //获取 Square 的对象,并调用它的 draw 方法

      Shape shape3 = shapeFactory.getShape("SQUARE");

      //调用 Square 的 draw 方法

      shape3.draw();

  }

}


单例模式


属于创建型模式,它提供了一种创建对象的最佳方式。

该类负责创建自己的对象,同时确保只有单个对象被创建。

设计模式_第2张图片

public class SingletonPatternDemo {

  public static void main(String[] args) {

      //不合法的构造函数

      //编译时错误:构造函数 SingleObject() 是不可见的

      //SingleObject object = new SingleObject();

      //获取唯一可用的对象

      SingleObject object = SingleObject.getInstance();

      //显示消息

      object.showMessage();

  }

}

装饰器模式

装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。属于结构型模式。可以给shap下的任意子类添加装饰。

扩展一个类经常使用继承方式实现,由于继承为类引入静态特征,并且随着扩展功能的增多,子类会很膨胀。


设计模式_第3张图片

public class DecoratorPatternDemo {

    public static void main(String[] args) {

        Shape circle = new Circle();

        Shape redCircle = new RedShapeDecorator(new Circle());

        Shape redRectangle = new RedShapeDecorator(new Rectangle());

        System.out.println("Circle with normal border");

        circle.draw();

        System.out.println("\nCircle of red border");

        redCircle.draw();

        System.out.println("\nRectangle of red border");

        redRectangle.draw();

    }

}

代理模式

一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。

在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。


设计模式_第4张图片

public class ProxyPatternDemo {

  public static void main(String[] args) {

      RealImage realImage = new realImage();

      Image image1 = new RealImage("test_10mb.jpg");

      Image image2 = new ProxyImage("test_10mb.jpg");

      image1.display();

      image2.display();

  }

}

策略模式


一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。

相当于给类似操作上加了一层变成策略。


设计模式_第5张图片

public class StrategyPatternDemo {

  public static void main(String[] args) {

      Context context = new Context(new OperationAdd());       

      System.out.println("10 + 5 = " + context.executeStrategy(10, 5));

      context = new Context(new OperationSubstract());       

      System.out.println("10 - 5 = " + context.executeStrategy(10, 5));

      context = new Context(new OperationMultiply());       

      System.out.println("10 * 5 = " + context.executeStrategy(10, 5));

  }

}

迭代器模式

提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。


设计模式_第6张图片

public class IteratorPatternDemo {

   public static void main(String[] args) {

      NameRepository namesRepository = new NameRepository();

      for(Iterator iter = namesRepository.getIterator(); iter.hasNext();){

         String name = (String)iter.next();

         System.out.println("Name : " + name);

      }     

   }}

注释:  内部类

1.内部类可以很好的实现隐藏,不允许有 private 与protected权限的,但内部类可以

2.内部类拥有外围类的所有元素的访问权限

3.可是实现多重继承

4.可以避免修改接口而实现同一个类中两种同名方法的调用。

你可能感兴趣的:(设计模式)