设计模式——工厂模式

工厂模式:

实现了创建者和调用者的分离

详细分类:

简单工厂模式

工厂方法模式

抽象工厂模式

面向对象设计的基本原则:

OCP(开闭原则,Open-Closed Principle):一个软件的实体应当对扩展开发,对修改关闭

DIP(依赖倒转原则,Dependence Inversion Principle):要针对接口编程,不要针对实现编程

LOD(迪米特法则,Law of Demeter):只与你直接的朋友通信,而避免与陌生人通信


简单工厂模式:

简单工厂模式也叫静态工厂模式,就是工厂类一般是使用静态方法,通过接受的参数不同来返回不同的对象实例

缺点:对于增加新产品无能为力!不修改代码的话,是无法扩展的 

public interface Car {

public void run();

}

public class Audi implements Car{

@Override
public void run() {
System.out.println("audi is running !");
}

}


public class Baoma implements Car{

@Override
public void run() {
System.out.println("baoma is running !");
}

}


public class SimpleFactory {

public static void createAuti(){

Car c = new Audi(); 
c.run();
}

public static void createBaoma(){

Car c = new Baoma(); 
c.run();

}



public class Client {

public static void main(String[] args) {
Car c1 = new Audi();
Car c2 = new Baoma();
c1.run();
c2.run();

//简单工厂模式,访问的类少 调用起来方便
SimpleFactory.createAuti();
SimpleFactory.createBaoma();

}

}


工厂方法模式

为了避免简单工厂模式的缺点,不完全满足OCP

工厂方法模式和简单方法模式最大的区别就是,简单工厂模式只有一个工厂类,而工厂方法模式有一组实现了相同接口的工厂类

工厂方法模式将上述的SimpleFactory 类变为一个接口,定义一个创建Car的抽象方法,然后由具体的品牌车趋去实现这个接口,重写这个方法,去创建Car,这样做方便扩展,扩展不用修改原来的工厂类,只需要实现接口即可


两者的比较

结构复杂度:

简单工厂占优势,简单工厂模式只需要一个工厂类,而工厂方法模式的工厂l类随着产品数量的增加而增加,无疑使类的个数越来越多,增加了结构复杂度

代码复杂度:

代码复杂度和结构复杂度是一对矛盾,所以简单工厂类的的代码复杂度大于工厂方法模式

客户端编程难度:

工厂方法模式在客户端需要对工厂类进行实例化,而简单工厂模式的工厂类是一个静态类,直接调用静态方法即可,所以简单工厂模式略胜一筹

管理上的难度:

实际上,我们一般都用简单工厂模式


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值