2018-02-05 对C#设计模式的具体理解、Java中常用缓存Cache机制的实现、AugularJS-特性、Django中提示TemplateDoesNotExist解决、设计模式

第一组:陈辉 对C#设计模式的具体理解

22.状态者模式

在以下情况下可以考虑使用状态者模式。

• 当一个对象状态转换的条件表达式过于复杂时可以使用状态者模式。把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简单化。

• 当一个对象行为取决于它的状态,并且它需要在运行时刻根据状态改变它的行为时,就可以考虑使用状态者模式。

我的理解是:对象类里面生成状态类的对象,而对象里面的具体的方法其实是生成的状态类对象的方法,而状态类对象方法里面操作结束总是要调用自己里面改变状态的方法来改变实际调用他的对象类里面状态类对象的状态。

还有其他21种类型的设计模式,详情可以查看当日文档内容。


第二组:冯佳丽 Java中常用缓存Cache机制的实现

——转载

缓存,就是将程序或系统经常要调用的对象存在内存中,一遍其使用时可以快速调用,不必再去创建新的重复的实例。这样做可以减少系统开销,提高系统效率。

缓存主要可分为二大类:

一、通过文件缓存,顾名思义文件缓存是指把数据存储在磁盘上,不管你是以XML格式,序列化文件DAT格式还是其它文件格式;

二、内存缓存,也就是实现一个类中静态Map,对这个Map进行常规的增删查.

2018-02-05 对C#设计模式的具体理解、Java中常用缓存Cache机制的实现、AugularJS-特性、Django中提示TemplateDoesNotExist解决、设计模式_第1张图片

2018-02-05 对C#设计模式的具体理解、Java中常用缓存Cache机制的实现、AugularJS-特性、Django中提示TemplateDoesNotExist解决、设计模式_第2张图片

第三组:蔡永坚 AugularJS-特性1

AngularJS是一个新出现的强大客户端技术,提供给大家的一种开发强大应用的方式。这种方式利用并且扩展HTML,CSS和javascript,并且弥补了它们的一些非常明显的不足。本应该使用HTML来实现而现在由它开发的动态一些内容。

AngularJS有五个最重要的功能和特性:

特性一:双向的数据绑定

数据绑定可能是AngularJS最酷最实用的特性。它能够帮助你避免书写大量的初始代码从而节约开发时间。一个典型的web应用可能包含了80%的代码用来处理,查询和监听DOM。数据绑定是的代码更少,你可以专注于你的应用。

我们想象一下Model是你的应用中的简单事实。你的Model是你用来读取或者更新的部分。数据绑定指令提供了你的Model投射到view的方法。这些投射可以无缝的,毫不影响的应用到web应用中。

传统来说,当model变化了。 开发人员需要手动处理DOM元素并且将属性反映到这些变化中。这个一个双向的过程。一方面,model变化驱动了DOM中元素变化,另一方面,DOM元素的变化也会影响到Model。这个在用户互动中更加复杂,因为开发人员需要处理和解析

这些互动,然后融合到一个model中,并且更新View。这是一个手动的复杂过程,当一个应用非常庞大的时候,将会是一件非常费劲的事情。

这里肯定有更好的解决方案!那就是AngularJS的双向数据绑定,能够同步DOM和Model等等。

特性二:模板

在AngularJS中,一个模板就是一个HTML文件。但是HTML的内容扩展了,包含了很多帮助你映射model到view的内容。

HTML模板将会被浏览器解析到DOM中。DOM然后成为AngularJS编译器的输入。AngularJS将会遍历DOM模板来生成一些指导,即,directive(指令)。所有的指令都负责针对view来设置数据绑定。

我们要理解AuguarJS并不把模板当做String来操作。输入AngularJS的是DOM而非string。数据绑定是DOM变化,不是字符串的连接或者innerHTML变化。使用DOM作为输入,而不是字符串,是AngularJS区别于其它的框架的最大原因。使用DOM允许你扩展指令词汇并且可以创建你自己的指令,甚至开发可重用的组件。

最大的好处是为设计师和开发者创建了一个紧密的工作流。设计师可以像往常一样开发标签,然后开发者拿过来添加上功能,通过数据绑定将会使得这个过程非常简单。

这里有一个例子,我们使用ng-repeat指令来循环图片数组并且加入img模板,如下:

function AlbumCtrl($scope) {
    scope.images = [
        {"image":"img/image_01.png", "description":"Image 01 description"},
        {"image":"img/image_02.png", "description":"Image 02 description"},
        {"image":"img/image_03.png", "description":"Image 03 description"},
        {"image":"img/image_04.png", "description":"Image 04 description"},
        {"image":"img/image_05.png", "description":"Image 05 description"}
    ];
}

这里还有一件事值得提一句,AngularJS并不强制你学习一个新的语法或者从你的应用中提出你的模板。


第四组:张元一 Django中提示TemplateDoesNotExist解决

Django中提示TemplateDoesNotExist解决

尝试了配置DIRS为绝对路径等方法,均无效,之后改为空,亲测bug消失

在settings.py中找到

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [''],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

其中,'DIRS': 配置为 ['']即可


第五组:陈孚楠 设计模式

1、 简单工厂模式
简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。试想一下,当我们在codeing的时候,在A类里面只要NEW了一个B类的对象,那么A类就会从某种程度上依赖B类。如果在后期需求发生变化或者是维护的时候,需要修改B类的时候,我们就需要打开源代码修改所有与这个类有关的类了。

例子:
工厂生产仿生机器,机器都会说话,机器狗“汪”,机器猫“喵“。。。
1、简单工厂模式:

    //接口产品Robot
    public interface Robot{   
        ...
        public void Ssy();
        ...
    }   
    //具体产品Dog
    public class Dog implements Robot{
        ...
        public void Ssy(){
            "汪~"
        }
        ...
    }
    //具体产品Cat
    public class Cat implements Robot{
        ...
        public void Ssy(){
            "喵~"
        }
        ...
    }
    //具体产品Bird
    public class Bird implements Robot{
        ...
        public void Ssy(){
            "叽~"
        }
        ...
    }

    ...
    
    //工厂
    public class RobotFactory{
        ...
        //生产机器的方法
        public Robot Produce(string type){
            if(type=="Dog")return new Dog();
            else if(type=="Cat")return new Cat();
            else if(type=="Bird")return new Bird();
            ...
        }
        ...
    }
    
    main(){
        RobotFactory rf = new RobotFactory();
        Robot r = rf.Produce("Dog");
        r.Say(); 
    }

    输出:"汪~"

提前需要知道你会需要哪些机器人,设定好。

如果工厂需要生产别的产品,就要在工厂的生产方法中增加一个逻辑判断。 用户得要让程序员增加产品实体类并且修改工厂生产方法的代码。

你可能感兴趣的:(2018-02-05 对C#设计模式的具体理解、Java中常用缓存Cache机制的实现、AugularJS-特性、Django中提示TemplateDoesNotExist解决、设计模式)