• Factory Method模式


    书上说用模版方法来生成实例,就是工厂方法模式了

    而这里的工厂方法要分为两部分,一是工厂框架,二是产品框架。而这个工厂框架包括产品类和工厂类,产品框架则是产品类和工厂类的具体产品实现类和工厂实现类。所以,具体的如下面所示

    框架

    抽象工厂->创建抽象产品

    具体实现类

    具体工厂->创建具体产品类

    继承关系是

    抽象工厂->由具体工厂来实现

    抽象产品->由具体产品来实现

    下面来具体的coding

    1,框架类,包括抽象产品和抽象工厂类

    package factorymethod;
    
    public abstract class ProductFactory {
        //生产产品
        public abstract Product create(String name);
        //注册产品
        public abstract void regist(Product product);
    }
    抽象工厂
    package factorymethod;
    
    public abstract class Product {
        //抽象方法
        public abstract void use();
    }
    抽象产品

    2,具体产品类,包括具体产品和具体工厂

    package factorymethod;
    import java.util.*;
    
    public class IdCardProductFactory extends ProductFactory {
        private List<Product> plist;
        
        
        public List<Product> getPlist() {
            return plist;
        }
    
        public void setPlist(List<Product> plist) {
            this.plist = plist;
        }
    
        @Override
        public Product create(String name) {
            return new IdCardProduct(name);
        }
    
        @Override
        public void regist(Product product) {
            plist.add(product);
        }
    
    }
    具体工厂
    package factorymethod;
    
    public class IdCardProduct extends Product {
        private String idName;
        
        
        public String getIdName() {
            return idName;
        }
    
        public void setIdName(String idName) {
            this.idName = idName;
        }
    
        IdCardProduct(String name){
            this.idName = name;
        }
        
        @Override
        public void use() {
            System.out.println("正在使用"+this.idName+"的身份信息");
        }
    
    }
    具体产品

    3,测试类

    package factorymethod;
    
    public class maintest {
    
        public static void main(String[] args) {
            ProductFactory pf = new IdCardProductFactory();
            Product p = pf.create("lee");
            Product p2 = pf.create("wei");
            p.use();
            p2.use();
        }
    
    }
    测试方法
    正在使用lee的身份信息
    正在使用wei的身份信息
    运行结果
  • 相关阅读:
    Ionic在Generating ES5 bundles for differential loadind的时候报错
    将整个网站变为黑白 CSS3 filter grayscale
    ionic4 sqlite 的 executeSql 方法第二个参数不传会报错
    ionic4 执行ionic cordova run android 时报错Could not find plugin "proposal-numeric-separator". Ensure there is an entry in ./available-plugins.js for it.
    ion-picker组件示例(ionic4),这个组件有样式错乱的问题
    Linux下常用命令
    搜索引擎使用技巧
    Flex布局介绍
    0浏览器内幕探寻--源头
    Geolocation API
  • 原文地址:https://www.cnblogs.com/ningheshutong/p/6687453.html
Copyright © 2020-2023  润新知