葡京娱乐开元棋牌_开元棋牌靠谱吗_f1娱乐开元棋牌先锋网 葡京娱乐开元棋牌_开元棋牌靠谱吗_f1娱乐开元棋牌片段及技术文章聚合

抽象工厂模式

抽象工厂模式:所有形态的工厂模式中最为抽象和最具一般性的一种形态
主要解决借口选择问题。
何时使用:系统的产品有多于一个的产品族,而系统只消费其中某一族的产品。
如何解决:在一个产品族里面,定义多个产品。
关键葡京娱乐开元棋牌_开元棋牌靠谱吗_f1娱乐开元棋牌:在一个工厂里聚合多个同类产品。
优点:当一个产品族中的多个对象被设计成一起工作时,它能保证客户端
实现:
1.为形状创建一个接口。
 public interfac shape{
    void draw();
}
2.创建实现接口的实体类。
public class Rectangle implements shape{
@Override 
public void draw(){
System.out.println("Inside Rectangle::drow() method.");
}
}

3.为颜色创建一个接口
public interface Color{
 void fill();
}
4.创建实现接口的实体类。
public class Red implements Color{
@Override
public void fill(){
 System.out.println("Inside Red::fill() method.");
}
}
5.为color和Shape对象创建抽象类来获取工厂。
public abstract class AbstractFactory{
 public abstract Color getColor(String color);
 public abstract Color getShape(String shape);
}
后面省略------------------

始终只使用同一个产品族中的对象。
缺点:产品族扩展非常困难,要增加一个系列的某一产品,既要在抽象的 Creator 里加葡京娱乐开元棋牌_开元棋牌靠谱吗_f1娱乐开元棋牌,又要在具体的里面加葡京娱乐开元棋牌_开元棋牌靠谱吗_f1娱乐开元棋牌。
使用场景: 1、QQ 换皮肤,一整套一起换。 2、生成不同操作系统的程序
注意事项:产品族难扩展,产品等级易扩展。


实现:
1.为形状创建一个接口。
 public interfac shape{
    void draw();
}
2.创建实现接口的实体类。
public class Rectangle implements shape{
@Override 
public void draw(){
System.out.println("Inside Rectangle::drow() method.");
}
}


3.为颜色创建一个接口
public interface Color{
 void fill();
}
4.创建实现接口的实体类。
public class Red implements Color{
@Override
public void fill(){
 System.out.println("Inside Red::fill() method.");
}
}
5.为color和Shape对象创建抽象类来获取工厂。
public abstract class AbstractFactory{
 public abstract Color getColor(String color);
 public abstract Color getShape(String shape);
}
后面省略------------------

原文地址:抽象工厂模式