当前位置:首页 > 网络技术 > c++代码示例大全(简单好玩的编程代码)(c语言代码简单例子)

c++代码示例大全(简单好玩的编程代码)(c语言代码简单例子)

longge@20222022-03-24 01:47:34网络技术256

策略模式就是准备一组算法,并将每一个算法封装起来,使得他们可以互换(这儿的关键就是算法的逻辑抽象,接口封装到一个类中,再通过委托的方式将具体的算法实现委托给具体的类来实现)

对称加密速度快加密大数据块文件特点,加密密钥和解密密钥是一样的

非对称加密,加密速度慢、加密强度高高,安全性特点,加密密钥和解密密钥不一样

#include
using namespace std;
class Strategy
{
public:
	virtual void crypy() = 0;

};
class AES :public Strategy
{

public:
	virtual void crypy()
	{
		cout << "AES加密算法 " << endl;
	}
};
class DES :public Strategy
{

public:
	virtual void crypy()
	{
		cout << " DES加密算法" << endl;
	}
};
class Context
{
public:
	void setStrategy(Strategy *strategy)
	{
		this->strategy = strategy;
	}
	void myoperator()
	{
		strategy->crypy();
	}


private:
	Strategy *strategy;
};
void main()
{
	//
	DES	*des = new DES;
	des->crypy();
	delete des;
	Strategy*strategy = NULL;
	strategy= new DES;
	Context *context = new Context;
	context->setStrategy(strategy);
	context->myoperator();
	delete strategy;
	delete context;
	system("pause");
	return;


}

中介者模式就是定义一个中介对象,未封装系列对象之间的交互,终结者是各个对象不需要显示的相互调用,从而使其耦合性松散,而且可以独立的改变他们之间的交互

中介者问题抛出

#include
using namespace std;
#include"string"
class Person
{
public:
	Person(string name, int sex, int condi)
	{
		m_name=name;
	    m_sex=sex;
		m_condi = condi;

	}
	string  getName()
	{
		return m_name;
	}
	int  getSex()
	{
		return m_sex;
	}
	int  getCondi()
	{
		return m_condi;
	}
protected:
	string   m_name;
	int      m_sex;
	int      m_condi;
};
class Women :public Person
{
public:
	Women(string name, int sex, int condi) :Person(name, sex, condi)
	{

	}
	virtual   void  getParter(Person*p)
	{
		if (this->m_sex == p->getSex())
		{
			cout << "我不是同性恋..(这里就是问题研究,不带任何感情色彩)" << endl;
		}
		if (this->getCondi() == p->getCondi())
		{
			cout << this->getName() << "和" << p->getName() << "绝配" << endl;

		}
		else
		{
			cout << this->getName() << "和" << p->getName() << "bu配" << endl;
		}
	}
};
class Man :public Person
{
public:
	Man(string name, int sex, int condi) :Person(name, sex, condi)
	{

	}
	virtual   void  getParter(Person*p)
	{
		if (this->m_sex == p->getSex())
		{
			cout << "我不是同性恋..(这里就是问题研究,不带任何感情色彩)" << endl;
		}
		if (this->getCondi() == p->getCondi())
		{
			cout << this->getName() << "和" << p->getName() << "绝配" << endl;

		}
		else
		{
			cout << this->getName() << "和" << p->getName() << "bu配" << endl;
		}
	}
};
void main()
{
	Person *xiaofang = new Women("小芳", 2, 5);
	Person *zhangsan = new Man("张三", 1, 4);
	Person *lisi = new Man("李四", 2, 5);
	xiaofang->getParter(zhangsan);
	xiaofang->getParter(lisi);
	system("pause");
	return;
}

中介者代码实现

#include
using namespace std;
#include"string"
class Person
{
public:
	Person(string name, int sex, int condi, Mediator*m)
	{
		m_name = name;
		m_sex = sex;
		m_condi = condi;
		mediator = m;

	}
	string  getName()
	{
		return m_name;
	}
	int  getSex()
	{
		return m_sex;
	}
	int  getCondi()
	{
		return m_condi;
	}
protected:
	string   m_name;
	int      m_sex;
	int      m_condi;
	Mediator  mediator;
};
class Mediator//中介这的抽象父类
{
public:
	virtual void getParter() = 0;
	void setMan(Person*pMan)
	{
		pMan = man;
	}
	void setWomen(Person*pMan)
	{
		pWomen = women;
	}
public:
	virtual void getParter()
	{
		if (pWomen->getSex() == pMan->getSex())
		{
			cout << "我不是同性恋..(这里就是问题研究,不带任何感情色彩)" << endl;
		}
		if (pWomen->getCondi() == pMan->getCondi())
		{
			cout << pWomen->getName() << "和" << pMan->getName() << "绝配" << endl;

		}
		else
		{
			cout << pWomen->getName() << "和" << pMan->getName() << "bu配" << endl;
		}
	}
private:
	Person   *pWomen;
	Person   *pMan;
};


class Women :public Person
{
public:
	Women(string name, int sex, int condi, Mediator*m) :Person(name, sex, condi,m)
	{

	}
public:
	virtual   void  getParter(Person*p)
	{
		mediator->setMan(p);
		mediator->setWomen(this);
		mediator->getParter();

	}
};
class Man :public Person
{
public:
	Man(string name, int sex, int condi, Mediator*m) :Person(name, sex, condi,m)
	{

	}
public:
	virtual   void  getParter(Person*p)

	{

		mediator->setMan(this);
		mediator->setWomen(p);
		mediator->getParter();
	}
};
void main()
{
	Mediator *m = new Mediator;
	Person *xiaofang = new Women("小芳", 2, 5,m);
	Person *zhangsan = new Man("张三", 1, 4,m);
	Person *lisi = new Man("李四", 2, 5,m);
	xiaofang->getParter(zhangsan);
	xiaofang->getParter(lisi);
	system("pause");
	return;
}
免责声明
本站部分资源来源于互联网 如有侵权 请联系站长删除
龙哥网是优质的互联网科技创业资源_行业项目分享_网络知识引流变现方法的平台为广大网友提供学习互联网相关知识_内容变现的方法。

“c++代码示例大全(简单好玩的编程代码)(c语言代码简单例子)” 的相关文章

点击复制链接jQuery插件clipboardjs(jquery复制节点的方法)

点击复制链接jQuery插件clipboardjs(jquery复制节点的方法)

clipboardjs插件可以实现点击文本复制到剪贴板的效果,常见的应用有点击复制链接。clipboardjs插件小巧简单,压缩后仅有11KB大小,且没有过多的配置,不依赖Flash以及任何臃肿的框...

IOS开发者账号个人(individual),公司(company),企业(enterprise)三种类型区别

IOS开发者账号个人(individual),公司(company),企业(enterprise)三种类型区别

苹果开发者账号分为 个人(individual),公司(company),企业(enterprise)三种类型。1、个人开发者账号(苹果公司会收取年费)优点:申请速度快(最快1天申请完成,最慢2-3个...

springboot中的dockerfile使用_java(springboot dockerfile)

springboot中的dockerfile使用_java(springboot dockerfile)

目录环境一、创建springboot项目选择Initalizr Service URL二、创建Dockerfile文件三、Springboot用maven打包遇到的坑解决办法四、制作Docker镜像五...

Java利用FileUtils读取数据和写入数据到文件_java(java从文件读取数据)

Java利用FileUtils读取数据和写入数据到文件_java(java从文件读取数据)

目录一、添加FileUtils依赖二、读入文件内容三、写入数据前言:用一行代码实现读取文件内容代码如下:一、添加FileUtils依赖      <!--&nb...

使用@Valid+BindingResult进行controller参数校验方式_java

使用@Valid+BindingResult进行controller参数校验方式_java

目录 @Valid+BindingResult进行controller参数校验 Controller层方法的参数校验 全局统一异常拦截器 @Valid+...

Springboot导出文件,前端下载文件方式_java(springboot实现文件上传下载)

Springboot导出文件,前端下载文件方式_java(springboot实现文件上传下载)

Springboot导出文件,前端下载文件 后端代码 可以把请求设置为post,我这里是Get @RequestMapping(value = "/download", method...