![3d9a488a27fc4cd5896c74ffc6942c35.png](https://img-blog.csdnimg.cn/img_convert/3d9a488a27fc4cd5896c74ffc6942c35.png)
java的设计模式 常用 分为三大类:
- 创建型模式(5种) :工厂模式,单例模式
- 结构性模式(7种) :适配器模式,代理模式
- 行为型模式(11种):策略模式,观察者模式
1.1常用的工厂模式是静态工厂,用static方法,作为一种类似于常见的工具类Utils等
一般情况下工厂类不需要实例化。
//定义一个接口
public interface food{}
//都实现这个接口,因为这家工厂做的时同样的事情,但是可以有不同的结果。
class A implements food{}
class B implements food{}
public class StaticFactory {
//构造函数私有化
private StaticFactory(){}
public static food getA(){ return new A(); }
public static food getB(){ return new B(); }
}
class Client{
public void get(String name){
food x = null ;
if ( name.equals("A")) {
x = StaticFactory.getA();
}else {
x = StaticFactory.getB();
}
}
}
1.1 抽象工厂模式,当涉及到产品族的时候,就需要引入抽象工厂模式了。
- 举个经典例子就懂了,组装一台电脑,需要基本的东西如:CPU+主板等,
但是这些东西又不是一家的,组装起来可能会出现,各种兼容问题,就像Intel 家产的 CPU 和 AMD 产的主板不能兼容使用,这时就想假如这家工厂都又CPU+主板+显卡等,那不就好了,就不会出现兼容问题,现在很流行套装,啥分布式的那一套,云计算套装,hadoop生态圈等,就想工厂,用户不需要知道,该怎么解决兼容问题。
public static void main(String[] args) {
//假设有一个厂是AMD的,那就可以这样了
ComputerFactory amd = new AmdFactory();
// 从这个大厂造 CPU
CPU cpu = amd.makeCPU();
// 从这个大厂造主板
MainBoard board = amd.makeMainBoard();
// 将CPU、主板组装在一起
Computer result = new Computer(cpu, board);
}
后期:加深知识点