zoukankan      html  css  js  c++  java
  • java设计模式--创建型模式--抽象工厂

    什么是抽象工厂,再次学习。

     1                                         抽象工厂
     2  概述
     3     提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
     4     
     5  适用性
     6     1.一个系统要独立于它的产品的创建、组合和表示时。
     7 
     8     2.一个系统要由多个产品系列中的一个来配置时。
     9 
    10     3.当你要强调一系列相关的产品对象的设计以便进行联合使用时。
    11 
    12     4.当你提供一个产品类库,而只想显示它们的接口而不是实现时。
    13              参与者
    14     1.AbstractFactory
    15       声明一个创建抽象产品对象的操作接口。
    16 
    17     2.ConcreteFactory
    18       实现创建具体产品对象的操作。
    19 
    20     3.AbstractProduct
    21       为一类产品对象声明一个接口。
    22 
    23     4.ConcreteProduct
    24       定义一个将被相应的具体工厂创建的产品对象。
    25       实现AbstractProduct接口。
    26 
    27     5.Client
    28       仅使用由AbstractFactory和AbstractProduct类声明的接口
    29  

    测试类:

     1 public class test {
     2     public static void main(String[] args) {
     3         IAnimalFactory blackAnimalFactory = new BlackAnimalFactory();
     4         ICat blackCat = blackAnimalFactory.createCat();
     5         blackCat.eat();
     6         IDog blackDog = blackAnimalFactory.createDog();
     7         blackDog.eat();
     8 
     9         IAnimalFactory whiteAnimalFactory = new WhiteAnimalFactory();
    10         ICat whiteCat = whiteAnimalFactory.createCat();
    11         whiteCat.eat();
    12         IDog whiteDog = whiteAnimalFactory.createDog();
    13         whiteDog.eat();
    14     }
    15 
    16 }
    1 public interface IAnimalFactory {
    2 
    3     ICat createCat();
    4     
    5     IDog createDog();
    6 }
     1 public class BlackAnimalFactory implements IAnimalFactory {
     2 
     3     public ICat createCat() {
     4         return new BlackCat();
     5     }
     6 
     7     public IDog createDog() {
     8         return new BlackDog();
     9     }
    10 
    11 }
    1 public interface ICat {
    2 
    3     void eat();
    4 }
    1 public class BlackCat implements ICat {
    2 
    3     public void eat() {
    4         System.out.println("The black cat is eating!");
    5     }
    6 
    7 }
    1 public class WhiteCat implements ICat {
    2 
    3     public void eat() {
    4         System.out.println("The white cat is eating!");
    5     }
    6 
    7 }
  • 相关阅读:
    实践测试登录功能的思路与原理解析(基于 Spring Security)
    测试人如何突破职业瓶颈,实现指数级成长?| 测试大咖在线沙龙
    往期优秀文章
    webRTC初接触,网页获取媒体音视频
    Guava Cache源码浅析
    打着维护用户利益旗号的厮杀
    HDFS资源管理器源码发布
    Ext复制grid里某一列的值
    不引入外部文件也可以显示图片
    页面嵌入Windows Media Player需要注意的
  • 原文地址:https://www.cnblogs.com/huzi007/p/4045759.html
Copyright © 2011-2022 走看看