1. 代码无错就是优?-简单工厂模式

1. 代码无错就是优?-简单工厂模式_第1张图片
大话设计模式

第一章 代码无错就是优?-简单工厂模式

所有编程初学者都会有这样的问题,就是碰到问题就直觉地用计算机能够理解的逻辑来描述和表达待解决的问题及具体的求解过程,这其实是用计算机的方式去思考。但这样的思维却使得我们的程序只为满足实现当前的需求,程序不容易维护,不容易扩展,更不容易复用,从而达不到高质量代码的要求。

简单工厂模式

就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。

  1. 统一的接口
public interface Human {

    void say();

}
  1. 男人类
public class Man implements Human {

    @Override
    public void say() {
        Log.d("WM","我是一个男人");
    }

}
  1. 女人类
public class Woman implements Human {

    @Override
    public void say() {
        Log.d("WM","我是一个女人");
    }

}
  1. 简单工厂类
public class SampleFactory {

    private static Human human;

    public static Human makeHuman(String type) {
        switch (type) {
            case "男":
                human = new Man();
                break;
            case "女":
                human = new Woman();
                break;
        }
        return human;
    }

}

1.活字印刷,面向对象

  • 要改,只需更改要改之字,此为可维护
  • 这些字并非用完这次就无用,完全可以在后来的印刷中重复使用,此乃可复用
  • 此时若要加字,只需另刻字加入即可,这是可扩展
  • 字的排列其实可能是竖排可能是横排,此时只需将活字移动就可做到满足排列需求,此时灵活性好

火药,指南针,造纸术都是从无到有,从未知到发现的伟大发明,而活字印刷仅仅是从刻板印刷到活字印刷的一次技术上的进步。

中国古代的四大发明,另三种应该都是科技的进步,伟大的创造或发现,而唯有活字印刷,实在是思想的成功,面向对象的胜利。

通过封装,继承,多态把程序的耦合度降低。
设计模式使得程序更加的灵活,容易修改,并且易于复用。

编程有一原则:就是用尽可能的办法去避免重复
让业务逻辑和界面逻辑分开,让它们之间的耦合度降低。只有分离开,才可以达到容易维护和扩展。

简单工厂模式

到底要实例化谁,将来会不会增加实例化的对象,比如增加开根运算,这是很容易变化的地方,应该考虑用一个单独的类来做这个创造实例的过程,这就是工厂。

UML类图

1. 代码无错就是优?-简单工厂模式_第2张图片
image

UML类图中的基本图示法
首先你看那个动物矩形框,它就代表一个类(Class)

类图分为三层:

  • 第一层显示类的名称,如果是抽象类,则就用斜体显示。

  • 第二层是类的特性,通常就是字段和属性。

  • 第三层是类的操作,通常是方法或行为。

注意前面的符号,+表示public, -表示private#表示protected

然后注意左下角的飞翔,它表示一个接口图,与类图的主要区别是顶端有《interface》显示,第一行是接口名称,第二行是接口方法。接口还有另外一种表示方法,俗称棒棒糖表示法,比如图中的唐老鸭类就是实现了“讲人话”的接口。

动物,鸟,鸭,唐老鸭之间是继承关系,继承关系用空心三角形+实线来表示

实线接口用空心三角形+虚线来表示

当一个类“知道”另一个类时,可以用关联关联关系用实线箭头来表示

聚合表示一种弱的拥有关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分,聚合关系用空心的菱形+实线箭头来表示

合成(组合)是一种强的拥有关系,体现了严格的部分和整体的关系,部分和整体的生命周期一样. 合成关系用实心的菱形+实线箭头来表示。另外,你会注意到合成关系的连线两端还有一个数字‘1’和数字‘2’,这被称为基数,表明这一端的类可以有几个实例,如果一个类可能有无数个实例,则就用‘n’来表示。关联关系,聚合关系也可以有基数的。

依赖关系,用虚线箭头来表示。

编程是一门技术,更加是一门艺术。 不能只满足于写完代码运行结果正确就完事,时常考虑如何让代码更加简练,更加容易维护,容易扩展和复用,只有这样才可以真正的提高。写出优雅的代码真的是一种很爽的事。

你可能感兴趣的:(1. 代码无错就是优?-简单工厂模式)