设计模式

1、单例模式 done 有且仅有一个对象
2、策略模式 done 算法的封装,抽象成接口
3、简单工厂模式 done
简单工厂模式只有一个工厂,这个工厂负责生产所有的具体产品。导致如果新增一种产品,必须修改这个工厂类。
4、工厂方法模式 done
抽象的工厂对应抽象的产品,但是具体的工厂产生具体的产品。
一个抽象产品类,可以派生出多个具体产品类。
一个抽象工厂类,可以派生出多个具体工厂类。
每个具体工厂类只能创建一个具体产品类的实例。
工厂方法模式是提供了一个抽象的工厂方法,每一种产品都对应一个具体的工厂,每个工厂只生产一种产品。这种模式的问题是每一个产品都需要一个工厂,所以会导致对象的数量很多,造成方法区不必要的消耗。
5、抽象工厂模式 done
多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。
一个抽象工厂类,可以派生出多个具体工厂类。
每个具体工厂类可以创建多个具体产品类的实例。
用来创建一组相互依赖的对象。和工厂方法模式可以相互转化。创建的是一组对象。
6、静态代理模式 done (实现同一个接口。代理类中包含委托类的实例对象)
7、动态代理模式 done
创建一个类实现InvocationHandler接口。实现invoke方法。在调用具体的方法的时候其实调用的是invoke方法。Proxy.newProxyInstance(Subject.class.getClassLoader(),new Class[]{Subject.class},new ProxyHandler(real))
第一个和第二个参数是构造一个class类型的对象出来。获取出构造函数,将第三个参数传入作为具体的执行类。内部调用的时候其实是执行的动态生成类的方法,在里面再调用handler的invoke方法。
8、观察者模式 done
其实就是发布和订阅。一方通知多方的模式设计。观察者模式提供了一种对象设计,让主题和观察者之间耦合度降得很低,为什么呢?关于观察者的一切,主题只知道观察者实现了Observer接口,并不需要观察者具体的类是谁,做了什么或者其他细节.
  这样的话,由于松耦合,改变主题或者观察者其中一方,并不会影响另一方,只要他们之间的接口仍被遵守,就可以自由地改变它.降低对象之间的耦合度,也是面设对象设计的一个很重要的原则。
9、装饰者模式 done
修饰模式是类继承的另外一种选择。类继承在编译时候增加行为,而装饰模式是在运行时增加行为。
增加一个修饰类包裹原来的类,包裹的方式一般是通过在将原来的对象作为修饰类的构造函数的参数。装饰类实现新的功能,但是,在不需要用到新功能的地方,它可以直接调用原来的类中的方法。修饰类必须和原来的类有相同的接口。
10、适配器模式 donw
其实是接口的转化,把一个接口转化为另外一个需要的接口,让两个不匹配的接口在一起工作。
1、类适配器模式:Adapter与Adaptee是继承关系,这决定了这个适配器模式是类的:
2、对象适配器模式:Adapter与Adaptee是委派关系,这决定了适配器模式是对象的。
11、模板方法模式
模板方法模式是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。
不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法模式的用意。
其实就是继承,控制一部分类的实现,默认一部分类的实现,强制子类一部分类的实现。抽象类中或许给出对外的一个最重要的方法,在这个方法中定义其他方法执行的顺序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值