设计模式
熙客
不生产知识,只是知识的搬运工
展开
-
策略模式
策略模式:定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 案例:有一群不同种类的鸭子,它们的飞行行为各有不同。这里的飞行行为相当于算法族,可以独立变化。 代码(策略模式 + 组合): 飞行行为 public interface FlyBehavior { public void performFly(); } class FlyWithWings implements FlyBehavior { @Override publ原创 2020-08-05 20:54:38 · 166 阅读 · 0 评论 -
迭代器设计模式
迭代器模式:提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。 简单来说,就是把不同集合的遍历操作分别封装起来。 代码: 数组的迭代器实现(ArrayList本身可以获取迭代器,这里省略实现ArrayList的迭代器) public class ItemBIterator implements Iterator { private String[] list; int position = 0; public ItemBIterator(String[原创 2020-08-03 04:09:42 · 167 阅读 · 0 评论 -
工厂模式--抽象工厂模式
抽象工厂模式:提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。 使用场景:当需要创建产品家族和想让制造的相关产品集合起来时,可以使用。 优点:把客户从所使用的实际具体产品中解耦。 工厂方法模式和抽象工厂模式的区别: 工厂方法使用继承(把对象的创建委托给子类,子类实现工厂方法来创建对象)。 抽象工厂使用对象组合(对象的创建被实现在工厂接口所暴露出来的方法中)。 代码: 原料家族: interface X { } class X1 implements X...原创 2020-06-17 18:07:23 · 148 阅读 · 0 评论 -
工厂模式--工厂方法模式
工厂方法模式:定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。 优点:在编写创建者类时,不需要知道实际创建的产品是哪一个。 代码: 产品实现: public abstract class P { String name; String type; ArrayList list = new ArrayList(); void prepare() { System.out.println("name: " +原创 2020-06-16 20:53:19 · 212 阅读 · 0 评论 -
工厂模式--简单工厂
工厂:处理创建对象的细节。 目的:将实例化具体类的代码从应用中抽离,或者封装起来,可以避免干扰应用的其他部分。 简单工厂:简单工厂其实不是一个设计模式,反而像一种编程习惯。 代码: 产品实现: /** * DESC: * 产品A */ public interface A { public void work1(); public void work2(); public void work3(); } class A1 implements A { @原创 2020-06-13 22:56:16 · 87 阅读 · 0 评论 -
单例模式
单例模式:确保一个类只有一个实例,并提供一个全局访问点。 诞生起因:有一些对象只需要一个实例,如果创造出多个实例,就会导致许多问题产生,例如程序的行为异常、资源使用过量、或者是不一致的结果。 应用:线程池、缓存、对话框、处理偏好设置、注册表等。 思考:只有一个实例可以通过java的静态变量static做到,但是这样在程序一开始就创建好了对象,如果这个对象非常耗费资源,还一致不用,就很浪费,而单例模式可以在需要时才创建对象。 public class A { private volatile原创 2020-06-10 09:34:34 · 98 阅读 · 0 评论