标签:这不 工厂模式 可维护性 对象 抽象工厂 一个 als apple 告诉
此文写给想要理解设计模式,但认为《设计模式》中所举的例子过于复杂的读者。
前人的经验告诉我们:使用以下设计模式提升软件的可维护性:
创建型模式:将实例化过程抽象化
1. 工厂方法
2. 抽象工厂
3. 发
结构型模式:通过组合类和对象来获得更大的结构
1.
行为模式
1.1 工厂模式
工厂模式的原则就是:绝对不要让用户直接new对象。
我们现在有产品接口、两个产品类:
public interface Fruit { void whatIm(); }
public class Apple implements Fruit { @Override public void whatIm() { //苹果 } }
public class Pear implements Fruit { @Override public void whatIm() { //梨 } }
先看看简单工厂:
public class FruitFactory { public Fruit createFruit(String type) { if (type.equals("apple")) {//生产苹果 return new Apple(); } else if (type.equals("pear")) {//生产梨 return new Pear(); } return null; } }
它根据传入参数的不同生产不同的产品。但是如果有新增加的产品,就要修改工厂类了。有些人觉得这不妥,并且认为,每种产品需要有一个工厂。
于是我们需要把两种产品的new操作包装起来,写一个工厂接口,两个工厂对象:
public interface FruitFactory { Fruit createFruit();//生产水果 }
public class AppleFactory implements FruitFactory { @Override public Fruit createFruit() { return new Apple(); } }
public class PearFactory implements FruitFactory { @Override public Fruit createFruit() { return new Pear(); } }
这就是工厂方法了。
用户用如下方法使用:
AppleFactory appleFactory = new AppleFactory(); PearFactory pearFactory = new PearFactory(); Apple apple = (Apple) appleFactory.createFruit();//获得苹果 Pear pear = (Pear) pearFactory.createFruit();//获得梨
1.2 抽象工厂模式
现在我们有两种产品:CPU、屏幕
CPU有两种:850、650
屏幕有两种:大、小
所以我们一共有六个类:CPU接口、850CPU、650CPU、屏幕接口、大屏幕、小屏幕
现在写出抽象工厂接口、红米手机抽象工厂、小米手机抽象工厂
小米手机抽象工厂包含了850CPU工厂、大屏幕工厂的功能
红米手机抽象工厂包含了650CPU工厂、小屏幕工厂的功能
总结一下,抽象工厂就是把两种不同的工厂方法拼在一起。
待补充
标签:这不 工厂模式 可维护性 对象 抽象工厂 一个 als apple 告诉
原文地址:https://www.cnblogs.com/snt165/p/11074899.html