我们都知道设计模式有五大原则
了解完设计模式的五大原则后,因为简单工厂模式即是利用工厂来返回所需的实例化对象,而工厂方法则是利用实现接口后的对象工厂来返回实例化的对象。而前两种都有一定的缺点
public interface Engine { //举例引擎,其他的省略
void run();
}
class HighEndEngine implements Engine {
@Override
public void run() {
System.out.println("高端发动机,启动快");
}
}
class LowEndEngine implements Engine {
@Override
public void run() {
System.out.println("低端发动机,启动慢");
}
}
public interface CarFactory {
Engine createEngine();
Tyre createTyre();
Seat createSeat();
}
public class HighEndCarFactory implements CarFactory {
@Override
public Engine createEngine() {
return new HighEndEngine();
}
@Override
public Tyre createTyre() {
return new HighEndTyre();
}
@Override
public Seat createSeat() {
return new HighEndSeat();
}
}
public class LowEndCarFactory implements CarFactory {
@Override
public Engine createEngine() {
return new LowEndEngine();
}
@Override
public Tyre createTyre() {
return new LowEndTyre();
}
@Override
public Seat createSeat() {
return new LowEndSeat();
}
}
public class Client {
public static void main(String[] args) {
CarFactory cf = new HighEndCarFactory();
Engine engine = cf.createEngine();
Tyre tyre = cf.createTyre();
Seat seat = cf.createSeat();
}
}
简单理解,高端工厂类只制造高端产品,例如高端引擎、高端轮胎以及高端座椅等,当产品族中新增几个产品,只需创建产品类以及在对应的工厂类中添加对应的方法即可。
在使用设计模式时,很难遵循五大原则和一大法则。我们使用设计模式是为了让代码具有可复用性、可扩展性和灵活性,不能一味地守着这几个规定,从而限制自己对编程的想象和发挥。因此,需要使用怎样的设计模式还得根据项目的实际需求来衡量选择。
这就跟我们的数据库三大范式一样,我们很难一样地遵循三大范式,有时候为了性能以及查询之类的效率,会增加点数据冗余。
原文:https://www.cnblogs.com/ryan-coder/p/14534545.html