android设计模式

一.工厂模式
工厂模式可以分为三类:

1)简单工厂模式(Simple Factory)
2)工厂方法模式(Factory Method)
3)抽象工厂模式(Abstract Factory)
区别
简单工厂模式 :
建立一个工厂(一个函数或一个类方法)来制造新的对象。
分布说明引子:从无到有。客户自己创建宝马车,然后拿来用。
工厂方法模式:
一个抽象产品类,可以派生出多个具体产品类。
一个抽象工厂类,可以派生出多个具体工厂类。
每个具体工厂类只能创建一个具体产品类的实例。
抽象工厂模式:
多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。
一个抽象工厂类,可以派生出多个具体工厂类。
每个具体工厂类可以创建多个具体产品类的实例。
区别:
工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个。
工厂方法模式的具体工厂类只能创建一个具体产品类的实例,而抽象工厂模式可以创建多个。
两者皆可。
1.简单工厂模式
产品类:

abstract class BMW {
public BMW(){

}  

}

public class BMW320 extends BMW {
public BMW320() {
System.out.println(“制造–>BMW320”);
}
}
public class BMW523 extends BMW{
public BMW523(){
System.out.println(“制造–>BMW523”);
}
}
工厂类:

public class Factory {
public BMW createBMW(int type) {
switch (type) {

    case 320:  
        return new BMW320();  

    case 523:  
        return new BMW523();  

    default:  
        break;  
    }  
    return null;  
}  

}

客户类:

public class Customer {
public static void main(String[] args) {
Factory factory = new Factory();
BMW bmw320 = factory.createBMW(320);
BMW bmw523 = factory.createBMW(523);
}
}
2.工厂方法模式
产品类:
abstract class BMW {
public BMW(){

}  

}
public class BMW320 extends BMW {
public BMW320() {
System.out.println(“制造–>BMW320”);
}
}
public class BMW523 extends BMW{
public BMW523(){
System.out.println(“制造–>BMW523”);
}
}
创建工厂类:
interface FactoryBMW {
BMW createBMW();
}

public class FactoryBMW320 implements FactoryBMW{

@Override  
public BMW320 createBMW() {  

    return new BMW320();  
}  

}
public class FactoryBMW523 implements FactoryBMW {
@Override
public BMW523 createBMW() {

    return new BMW523();  
}  

}
客户类:
public class Customer {
public static void main(String[] args) {
FactoryBMW320 factoryBMW320 = new FactoryBMW320();
BMW320 bmw320 = factoryBMW320.createBMW();

    FactoryBMW523 factoryBMW523 = new FactoryBMW523();  
    BMW523 bmw523 = factoryBMW523.createBMW();  
}  

}
3.抽象工厂模式
产品类:
//发动机以及型号
public interface Engine {

}
public class EngineA extends Engine{
public EngineA(){
System.out.println(“制造–>EngineA”);
}
}
public class EngineBextends Engine{
public EngineB(){
System.out.println(“制造–>EngineB”);
}
}

//空调以及型号
public interface Aircondition {

}
public class AirconditionA extends Aircondition{
public AirconditionA(){
System.out.println(“制造–>AirconditionA”);
}
}
public class AirconditionB extends Aircondition{
public AirconditionB(){
System.out.println(“制造–>AirconditionB”);
}
}
创建工厂类:
//创建工厂的接口
public interface AbstractFactory {
//制造发动机
public Engine createEngine();
//制造空调
public Aircondition createAircondition();
}

//为宝马320系列生产配件
public class FactoryBMW320 implements AbstractFactory{

@Override    
public Engine createEngine() {      
    return new EngineA();    
}    
@Override    
public Aircondition createAircondition() {    
    return new AirconditionA();    
}    

}
//宝马523系列
public class FactoryBMW523 implements AbstractFactory {

 @Override    
public Engine createEngine() {      
    return new EngineB();    
}    
@Override    
public Aircondition createAircondition() {    
    return new AirconditionB();    
}    

}
客户:
public class Customer {
public static void main(String[] args){
//生产宝马320系列配件
FactoryBMW320 factoryBMW320 = new FactoryBMW320();
factoryBMW320.createEngine();
factoryBMW320.createAircondition();

    //生产宝马523系列配件    
    FactoryBMW523 factoryBMW523 = new FactoryBMW523();    
    factoryBMW320.createEngine();  
    factoryBMW320.createAircondition();  
}    

}

根据原作 https://pan.quark.cn/s/459657bcfd45 的源码改编 Classic-ML-Methods-Algo 引言 建立这个项目,是为了梳理和总结传统机器学习(Machine Learning)方法(methods)或者算法(algo),和各位同仁相互学习交流. 现在的深度学习本质上来自于传统的神经网络模型,很大程度上是传统机器学习的延续,同时也在不少时候需要结合传统方法来实现. 任何机器学习方法基本的流程结构都是通用的;使用的评价方法也基本通用;使用的一些数学知识也是通用的. 本文在梳理传统机器学习方法算法的同时也会顺便补充这些流程,数学上的知识以供参考. 机器学习 机器学习是人工智能(Artificial Intelligence)的一个分支,也是实现人工智能最重要的手段.区别于传统的基于规则(rule-based)的算法,机器学习可以从数据中获取知识,从而实现规定的任务[Ian Goodfellow and Yoshua Bengio and Aaron Courville的Deep Learning].这些知识可以分为四种: 总结(summarization) 预测(prediction) 估计(estimation) 假想验证(hypothesis testing) 机器学习主要关心的是预测[Varian在Big Data : New Tricks for Econometrics],预测的可以是连续性的输出变量,分类,聚类或者物品之间的有趣关联. 机器学习分类 根据数据配置(setting,是否有标签,可以是连续的也可以是离散的)和任务目标,我们可以将机器学习方法分为四种: 无监督(unsupervised) 训练数据没有给定...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值