Java设计模式

工厂模式
1.工厂模式核心本质:
实例化对象,用工厂代替new操作
将选择实现类,创建对象统一管理和控制。从而将调用者根我们的实现类解耦。(迭代器就是一个工厂模式实现)
2.工厂模式一:简单工厂模式(静态工厂模式)因为其内部使用的方法都是静态的。
但是简单工厂对于新产品无能为力 不修改代码无法进行拓展 不满足OCP(开闭原则)

public interface Car {
   public void run();
}
public class AoDi implements Car {
    @Override
    public void run() {
        System.out.println("奥迪在跑");
    }
}
public class Byd implements Car {
    @Override
    public void run() {
        System.out.println("比亚迪在跑");
    }
}

/*
创建一个简单工厂类
 */
public class simplefactory {
    public static Car creat_car(String car){
        if("奥迪".equals(car)){
            return new AoDi();
        }else if("比亚迪".equals(car)){
            return new Byd();
        }
        return null;
    }
}
/**
 * 在使用简单的工厂类后 客户做的事情减少了 只需要提出要求即可 不需要知道详细的步骤
 */
public class Cilent1 {
    public static void main(String[] args) {
        Car c =  simplefactory.creat_car("奥迪");
        Car c1 = simplefactory.creat_car("比亚迪");
        c.run();
        c1.run();
    }

}

3.工厂方法:避免了简单工厂模式缺点 新增产品不需要对原方法进行修改。直接新增加去实现方法就行。

public interface Car {
   public void run();
}
public class AoDi implements Car {
    @Override
    public void run() {
        System.out.println("奥迪在跑");
    }
}

public class Byd implements Car {
    @Override
    public void run() {
        System.out.println("比亚迪在跑");
    }
}
/**
 * 增加一个工厂方法的接口 进行创建不同汽车
 */
public interface FactoryMethod {
    Car creat();
}
/*
对工厂方法的实现
 */
public class AoDiFactory implements FactoryMethod{
    @Override
    public Car creat() {
        return new AoDi();
    }
}/*
对工厂方法的实现
 */
public class BydFactory implements FactoryMethod {
    @Override
    public Car creat() {
        return new Byd();
    }
}
/*
虽然工厂模式避免了简单工厂的缺点但是工厂模式下创建的类和方法会加多。
*/
public class Client {
    public static void main(String[] args) {
        Car c = new AoDiFactory().creat();
        Car c1 = new BydFactory().creat();
        c.run();
        c1.run();
    }
}

4.抽象工厂模式:不可以增加产品 可以增产品集

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